js 数组——方法总结

遍历

1、for:最常用也最简单,普通for循环才是最优雅的

for(j = 0; j < arr.length; j++) {
   // 最简单
}
或
for(j = 0,len=arr.length; j < len; j++) {
   // 比第一个性能高,不用每次都计算arr的长度
}

2、for in:性能最低

for(j in arr) {
   
}

3、for of:这种方式是es6里面用到的,性能要好于forin,但仍然比不上普通for循环。它被设计用来遍历各种类数组集合,例如DOM NodeList对象、Map和Set对象,甚至字符串也行。

for(let value of arr) {  
   
}

4、forEach:数组自带的foreach循环,使用频率较高,实际上性能比普通for循环弱;

arr.forEach(function(e){  
   
});
或
Array.prototype.forEach.call(arr,function(el){  
   //由于foreach是Array型自带的,对于一些非这种类型的,无法直接使用(如NodeList),所以才有了这个变种,使用这个变种可以让类似的数组拥有foreach功能。
});

5、map:这种方式也是用的比较广泛的,虽然用起来比较优雅,但实际效率还比不上foreach

arr.map(function(item, index){  
   
});

迭代

every:对数组的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。

some:对数组的每一项运行给定函数,如果该函数对任何一项返回true,则返回true。

map:对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组。

filter:对数组的每一项运行给定函数,返回该函数执行结果为true的项组成的数组。

find:对数组的每一项运行给定函数,返回第一个函数执行结果为true的项。

检测数组

if (value instanceOf Array) {
    // 如果页面中存在其他iframe的话,那么可能存在两个版本以上的Array的构造函数
}
或
if (Array.isArray(value)) {
    // 没有上诉问题
}

栈、队列方法

arr.push('red', 'blud');    // 最后面推入两项
arr.pop();                  // 取出最后一项
arr.shift();                // 取出第一项
arr.unshift('yellow');      // 最前面压入一项

排序

arr.sort((a,b) => {
    return a - b;  // 小于0是升序,大于0是降序
})
arr.reverse();  // 数组反转

操作方法

arr1.concat(arr2);      // 数组拼接
arr.slice(start,[end]); // 返回从start到end的一个新数组,不影响原数组
arr.splice(start, length, [replace]); //从start位置,删除length个元素,再插入replace
如 arr.splice(2, 0, 'red', 'blud'),从第2个位置,删除0个,插入red和blud

位置方法

arr.indexOf(5);      // 5第一次出现的位置
arr.lastIndexOf(5);  // 5最后一次出现的位置
arr.includes(5);     // 数组中是否包含5

归并方法

var values = [1,2,3,4,5];
var sum = values.reduce((pre, cur, index, array) =>{
    // pre 是上一次计算的结果,第一次是values[0]
    // cur 是当前值,第一次是values[1]
    return pre + cur;
})
alert(sum) // 15

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值