javascript 数组 和其他引用类型

一.数组

  • 数组的初始化 有两种:var arr = new Array();var arr = [1,2,3,4,5];
  • 在jsz中输出数组的值等价于调用数组的toString方法
  • javascript可以动态的改变数组的长度,并且被截断后的数组后面元素为空。
    <script type="text/javascript">
            var arr = [1,2,3,4,5];
            document.write(arr);//输出为1,2,3,4,5
            arr.length = 2;
            document.write(arr);//输出为1,2,
            arr.length = 5;
            document.write(arr);//输出为1,2,,,
    </script>
  • 数组添加元素和移除元素的方法:
    arr.push()//添加元素 返回结果为新数组长度
    arr.pop()//弹出元素 返回值为移除的结果
    arr.shift() //从头部移除一个元素 返回值为移除的元素
    arr.unshift() // 从头部添加 返回值为数组的长度
<script type="text/javascript">
            var arr = [1,2,3];
            document.write(arr.push(4,5));//输出为5
            document.write(arr)//输出为1,2,3,4,5
            document.write('-------------');
            document.write(arr.pop(1));//输出为5
            document.write(arr);//输出为1,2,3, 4
            document.write('-------------');
            document.write(arr.shift());//输出为1
            document.write(arr);//输出为2,3,4
            document.write('-------------');
            document.write(arr.unshift(6,9));//输出为5
            alert(arr)//输出为4
        </script><hr/>
  • 数组的其他操作:
    arr.splice(起始位置,截取的个数,第三个以后表示追加) 返回值为移除的元素
    arr.slice(起始位置,截取位置) 不操作数据本身
    arr.concat() 对数组的合并 不操作数组本身
    arr.join(‘-‘)元素之间添加内容,不操作数组本身
    arr.sort()数组排序 操作数组本身 可以接一个函数来自定义比较
    arr.reverse()将数组倒叙排序
    <script type="text/javascript">
            var arr1 = [1,2,3];
            var arr2 = [4,5,6];

            alert(arr1.splice(1, 2, arr2));//输出为2,3
            alert(arr1)//输出为1,4,5,6 
            alert(arr1.slice(1,3));//输出4,5,6
            alert(arr1);//1,4,5,6 不操作原本的数组
            alert(arr1.concat(arr2));//1,4,5,6,4,5,6
            alert(arr2.join('-')); //4-5-6
            alert(arr1.sort());//1,4,5,6 
            alert(arr1.sort(new Function("a","b","return a <b ; ")));//6,5,4,1
            alert(arr1.reverse());//4,5,6,1
    </script>

注意:alert(arr1.reverse());//4,5,6,1这里输出并不是想象中1,4,5,6。因为splice函数拼接的arr1返回值是[1,arr2],这里的数组是arr2的引用,并不是arr2的拷贝。后面的排序操作只会对[1,arr2[0]]进行比较操作,并不会对arr2内部进行排序。可以想象如果对arr2进行修改,arr1也会改变,因为arr1存取的只是arr2的引用。

二.Object对象

  • Object 对象不能有重复的值
  • 对象的属性可以为函数
    <script type="text/javascript">
        var obj = new Object();
        obj.name = 'li';
        obj.age = 20 ;
        obj.say = Function("alert('hehe')");

        for(var attribute in obj){
            alert(attribute+obj[attribute]);
        }
    </script>

三.其他引用类型

  • Global对象
    global对象中的方法是属于声明的全局变量的
  • MATH
  • DATE

四.EMAC5 数组的新特性

  • 查找元素
    • arr.indexOf(“4”)查看其索引值
    • arr.indexof(起始位置,所查的参数)
    • arr.lastIndexOf();//查找最后一个
  • 对数组元素的操作:
    • every : 对数组的每一元素行函数的运行 如果都返回true 最后返回true 如果有一个false 则返回false
    • some 有一个true 则返回true
    • filter 对数组进行一个执行,将过滤后的结果返回
    • forEach 循环数组的每一项的值,并执行一个方法
    • map 执行方法 ,并返回结果
    • reduce 并返回结果 遍历
    <script type="text/javascript">
    var array =[1,2,3,4,5,6];
    var a1 = array.every(function(item,index,array){return item>3;});//true
    var a2 = array.some(function(item,index,array){return item>3;});//false
    var array1 = array.filter(function(item,index,array){return item>3;});//返回[4,5,6]
    var array2 = array.map(function(item,index,array){return item * 2;});//返回[2,4,,6,8,10,12]
    //此处不能对 item进行操作 因为item只是一个临时的值,而不是数组的引用。
    array.forEach(function(item,index,array){array[index] =  item * 2;});
    var a3 = array.reduce(function(prev,cur,index,array){return prev+cur;});//返回42 返回的值存在prev这个变量里
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值