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()作用类似,只是方向相反而已。
下面介绍一些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()作用类似,只是方向相反而已。