js 中数组的常用方法总结

arr.fill('a');
//所有子元素 都改为 "a";

[{a: 1},{b: 2}, ...Array(8).fill({}, 0)]

//后面八个元素 全部用 {} 代替;

[{a: 1},{b: 2}, ...Array(8).fill({}, 0,5)]

//后面5 个元素用{}代替,其他是 undefined

arr.every(item=> item.age>20);
//如果数组中所有元素的age >20 ,返回true,否则返回false;

arr.some(item=> item.age>20);
//如果数组中有一个元素的age >20 ,返回true,否则返回false;

findIndex(),find( ) 和 filter()都是 匹配 item;
区别是 find 只找到第一个就停止, find 返回的是 符合的item
filter 返回所有匹配的item组成的数组;
findIndex 返回的是 item的index;

lastIndexOf() ,indexOf() 和 includes() 都是检查是否存在某个item;

 区别是  indexof 无法判断NaN ;includes 可以;

indexof 找不到返回 -1,找到返回index;
includes() 直接返回 true 或 false;
lastIndexOf() 从字符后面开始查找,返回 最后一个匹配的index,找不到 就返回 -1;

pop():删除原数组最后一项,并返回删除元素的值;如果数组为空则返回undefined,改变原数组
shift:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined,改变原数组
unshift:将参数添加到原数组开头,并返回数组的长度,改变原数组
push:将参数添加到原数组末尾,并返回数组的长度,改变原数组
concat:返回一个新数组,是将参数添加到原数组中构成的,不改变原数组;

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目,该方法会改变原始数组。
arr.splice(2,0,"a") 在index为2的位置,删除0 个元素,插入 "a";
arr.splice(2,1,"a") 删了index 为2 的元素,替换为 "a";
arr.splice(2,1,"a") 删了index 为2 的元素;
数组的增删改 都可以用splice 完成;

slice(start,end):返回从原数组中指定开始下标到结束下标之间的项组成的新数组,该方法不会改变原始数组。
var arr2 = arr.slice() ; 不传值表示 克隆了 arr2;
除了正常用法,slice 经常用来将 array-like 对象转换为 true array。在一些框架中会经常有这种用法:

Array.prototype.slice.call(arguments);//将参数转换成真正的数组.

reverse:将数组反序
sort((a,b)=>a-b):按指定的参数对数组进行排序 return a-b 升序 b-a 降序

例如: var arr=[{name:"a",age:21},{name:"b",age:12},{name:"c",age:2},{name:"d",age:42},{name:"e",age:1}]
按照age 从小到大排序

arr = arr.sort(function (a,b) {
   return a.age>b.age
   })
console.log(arr)

arr.join(';') 方法用于把数组中的所有元素放入一个字符串,;隔开。
str.split(';') 字符串转数组,以‘;’区分;

arr.forEach(item=>{})
遍历数组,它不能停止循环;

reduce()

改变原数组的:

shift:将第一个元素删除并且返回删除元素,空即为undefined
unshift:向数组开头添加元素,并返回新的长度
pop:删除最后一个并返回删除的元素
push:向数组末尾添加元素,并返回新的长度
reverse:颠倒数组顺序
sort:对数组排序
splice:splice(start,length,item)删,增,替换数组元素,返回被删除数组,无删除则不返回
不改变原数组的:

concat:连接多个数组,返回新的数组
join:将数组中所有元素以参数作为分隔符放入一个字符
slice:slice(start,end),返回选定元素
map,filter,forEach,some,every等不改变原数组


lidog
119 声望3 粉丝