数组
说明:
只记录不熟悉的知识点
操作
1. 添加
(1) push()
//利用push合并数组,完全可以用concat
Array.prototype.push.apply(arr,[1,2,3])
(2) unshift()
2. 删除
(1) pop()
(2) shift()
(3) delete
操作符
此方式删除指定下标的数组值,值重置为undefined
3. 分离合并
(1) slice(start,[end])
返回start到end前的部分
注意:可以是负数
(2) splice(start,delnum,...addvalue)
返回删除,添加(替换)后的新数组
(3) concat()
合并数组,改变原数组
arr1.concat(arr2);
//字符串也有此方法,连接字符串
4. 其他方法
(1) sort([fn])
ascii排序,fn比较两个值大小,大于0第一个值大,等于0,小于0
var arr=["x",1,"g","b"];
arr.sort();//[1, "b", "g", "x"]
(2) reverse()
反转数组
arr.reverse();
(3) join(str)
(4) indexOf(value)
/lastIndexOf(value)
查找第一个/最有一个值在数组的下标,无-1
(5) isArray()
//等效于
Object.prototype.toString.call(xx)==="[object Array]"
5. 遍历
(1) for
//正向
for(var i=0,l=arr.lenght;i++){
...
}
//逆向,效率最高
for(var l=arr.length;l--;){
...
}
(2) forEach(fn(val,index,arr))
ES5,低版本不支持
函数接收参数arr指数组本身
arr.forEach(function(val,index,arr){
...
})
(3) map(fn(val,index,arr))
遍历并返回一个新数组,此函数操作数组中的每一个值(react中用的较多)
fnvar numbers = [1, 2, 3];
numbers.map(function (n) {
return n + 1;
});
// [2, 3, 4]
(4) filter(fn(val,index,arr))
遍历,返回结果为true的值组成新数组
[1, 2, 3, 4, 5].filter(function (val) {
return val > 3;
})
// [4, 5]
(5) some(fn(val,index,arr))
遍历,其中一个值经过函数处理返回了true,则返回true
var arr = [1, 2, 3, 4, 5];
arr.some(function (elem, index, arr) {
return elem >= 3;
});
// true
(6) every((val,index,arr))
所有都是true,则返回true
(7) reduce(fn(ex,val,index,arr),ex)
/ reduceRight()
返回ex,默认是数组中的第一个val,也可以用第二参数指定
[1, 2, 3, 4, 5].reduce(function(ex, val){
return ex + val;
}, 10);
// 25
['aaa', 'bb', 'c'].reduce(function (longest, entry) {
return entry.length > longest.length ? entry : longest;
}, '');