数组的遍历
for:
普通版:for(let i=0; i<arr.length; i++) { }
优化版:for(let i=0,len=arr.length; i<len; i++) { }
弱化版:for(let i=0; arr[i] != null; i++) { }
forEach: arr.forEach((e, index) => { }) 性能比for要弱
变种:Array.prototype.forEach.call(arr, (el, index) => { }) 实际性能要比普通的foreach弱
for...in... :for(let i in arr) { } 效率最低
for...of...:for(let i of arr) { } 性能好于forin
map:arr.map((n) => { }) 实际效率还比不上forEach
every():数组的每一项都满足给定条件则返回true
arr = [1, 2, 3, 4];
arr.every((item,index,array) => {return item > 2;}); // false
arr.some((item,index,array) => {return item > 2;}); //true
arr.filter((item,index,array) => {return item > 2}); // [3, 4]
arr; // [1, 2, 3, 4]
arr.reduce((prev, cur, index, array) => { return prev + cur}); // 10
(函数返回的任何值都会作为第一个参数传给下一项)
some():数组中只要有一项满足条件就返回true
filter():返回满足给定条件的数据项组成的新数组,不改变原数组
reduce():遍历数组,归并方法
数组的操作
push():向数组的末尾添加一个或多个元素,并返回新的长度
pop():删除数组的最后一个元素,数组的长度减1,并且返回删除元素的值(数组为空时,不改变数组,并返回undefined)
unshift():向数组的头部添加一个或多个元素,返回新的长度
shift():删除并返回数组的第一个元素
reverse():颠倒数组中的元素顺序
sort():对数组元素进行排序(默认按照ASCII)
var arr = [10,5,1000,25,1];
arr.sort(); // [1, 10, 1000, 25, 5] 默认按照首字母顺序排
arr.sort((a, b)=>{
return a-b;
}); // [1, 5, 10, 25, 1000] 从大到小排序
concat():链接两个或多个数组
join():把所有的元素放进一个字符串,通过指定的分隔符分割
splice():删除元素,并向数组添加新元素
var arr = [1, 2, 3, 4, 5, 6];
arr.splice(2, 3); // [3, 4, 5] 删除第三个元素以后的三个数组元素
arr.splice(2, 0, 7, 8); // [] 在第三个元素之前插入7和8
arr; // [1, 2, 7, 8, 9]
arr.splice(2, 3, 9, 10); // [7, 8, 9] 删除第三个元素以后的三个数组元素,并用9和10代替
arr; // [1, 2, 9, 10]
slice(start, end):从某个已有的数组返回选定的元素(没有end参数时就到数组结尾)
indexOf(x, start)、lastIndexOf():查找数组元素的位置,参数:要查的项和起点位置索引