js中的Array的长度不是只读的

来源:互联网 发布:崩坏学园2淘宝冲钻 编辑:程序博客网 时间:2024/06/06 09:49
Array应该是js中除了Object之外最常用的类型了。而且js中的Array与其他多数语言中的数组有相当大的区别。其区别主要在于js中的数组的每一项可以保存任何类型的数据。而且js的数组的大小是可以动态调整的。

    下面介绍一些Array中比较重要的知识:

    1.js中的Array的长度不是只读的,就是说可以直接设置Array的length属性。

    var colors=['red','green','blue'];

    colors.length=2;

    console.log(colors[2]);   //undefined

    复制代码

    2.检测某个对象是不是数组

    一般而言检测对象类型使用instanceof,而使用instanceof的前提是只有一个全局执行环境,但是当页面中包含多个框架时,实际上就存在多个不同的全局执行环境了,从而存在多个不同版本的Array构造函数。ECMAScript5提供了Array.isArray()方法来解决这个问题。所以检测数组最好使用下面的方法:

    if(Array.isArray(value)){

    //……

    }

    复制代码

    3.Array的重排序方法

    js的Array提供两种重排序方法:reverse()和sort()。reverse()方法可以直接反转数组项的顺序,天津乐园医院而sort()可以接收一个比较函数作为参数,所以可以自定义排序的方式,以下是按照正序排列的例子:

    function compare(value1,value2){

    if(value1>value2){

    return 1;

    }

    else if(value1<value2){

    return -1;

    }

    else{

    return 0;

    }

    }

    var numbers=[5,18,2,66,7,0];

    numbers.sort(compare);

    console.log(numbers);

    复制代码

    4.Array的splice()方法

    这个方法可能是最强大的数组方法了,它有很多种方法:

    1)删除:splice(0,2)可以删除数组的前两项。

    2)插入:splice(2,0,"red","green")会从当前数组的无痛人流最佳时间位置2开始插入"red"和"green"。

    3)替换:splice(1,1,"red")会将当前数组位置1的项替换为"red"。

    以下是用来删除数组中某一项(不是数组中项的位置)的例子:

    var colors=['red','green','blue'];

    colors.splice(colors.indexOf('green'),1);

    console.log(colors);

    复制代码

    5.Array的迭代方法中的filter()和map()

    filter()方法对查询符合某些条件的的所有数组项非常有用:

    var numbers=[5,10,6,22,33,2,15];

    var filterResult=numbers.filter(function(item,index,array){

    return item>10;

    })

    console.log(filterResult);

    复制代码

    map()方法适合创建包含的项与另一个数组一一对应的数组(对数组中的每一项进行相同的操作,然后返回这个新的数组):

    var numbers=[5,10,6,22,33,2,15];

    var mapResult=numbers.map(function(item,index,array){

    return item*2;

    })

    console.log(mapResult);

    复制代码

    6.Array的归并方法reduce()和reduceRight()

    可以利用reduce()方法执行求数组中所有值之和的操作:

    var numbers=[1,2,3,4,5];

    var sum=numbers.reduce(function(pre,cur,index,array){

    return pre+cur;

    })

    console.log(sum);

    复制代码

    reduceRight()作用类似,只是方向相反而已。
0 0
原创粉丝点击