数组方法大全

309 阅读2分钟

concat拼接数组

join 将数组进行拼接 ( arr.join("*") )

reverse() 翻转数组 arr.reverse() 返回翻转后的数组

sort 数组排序,返回排序后的数组

数组查找

includes()用来判断一个数组是否包含一个指定的值,存在返回ture ,( arr.includes(值) )

indexof() 在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。 (通常用它判断数组中有没有这个元素) (arr.indexOf(值))

数组增删

pop() 删除最后一个, 返回删除的值

shift 删除第一个 , 返回删除的值

push 添加在最后,返回数组最新的长度

unshift 添加在第一个,返回数组最新的长度

splice

  • splice(指定添加/删除的位置,删除个数,添加的东西)
  • arr.splice(截取下标开始的数据)返回新数组,影响原数组(为截取的数)

arr.slice(开始下标,结束下标) 截取数组返回一个新数组(包前不包后),但不影响原数组

数组循环

find 返回满足条件的对象,不满足返回undefined

findIndex返回满足条件的下标,不满足返回 -1

some 只要有一个条件满足立刻结束,返回为true/false

every 判断是否全部满足条件

map返回一个新数组,返回值构成其结果(可重新定义)

fifter 筛选数组,返回一个新数组(满足条件的数组)(对于undefined不处理)

forEach没有返回值

for in 与 for of

  • for in 返回值是索引key 推荐遍历对象
  • for of 返回值是 值value,修复for in 的不足,但不可遍历对象,需要用object.keys() 解决

reduce可数组降维、求和(注意要给一个两个参数第一个为函数,第二个为0),

数组去重
 let arr = [4, 898, 898, 24, 25556, 6, 486, 24, 25556];
 ​
 // 方案一:es6新增 set
 console.log([...new Set(arr)]);
 //方案二:相邻元素去重
 function quchong(arr) {
   // 先对数组进行排序
   arr = arr.sort();
   let newArr = [];
   // 循环数组,判断相邻的元素不相等则推入新数组
   for (let i = 0; i < arr.length; i++) {
     if (arr[i] !== arr[i + 1]) {
       newArr.push(arr[i]);
     }
   }
   return newArr;
 }
 console.log(quchong(arr));
 ​
 // 方案三:
 function quchong1(arr) {
   let newArr = [];
   // 循环数组,利用indexOf判断循环的数是否在新数组
   for (let i = 0; i < arr.length; i++) {
     if (newArr.indexOf(arr[i]) === -1) {
       newArr.push(arr[i]);
     }
   }
   return newArr;
 }
 console.log(quchong1(arr));
数组降维
 let arr1 = [5, 87, 15, [8, 56], 225, 89, [885, 2]];
 // 方案一:reduce
 let newArr = arr1.reduce((sum, item) => sum.concat(item), []);
 console.log(newArr, "newArr");
 // 方案二:es6新增 flat
 let newArr1 = arr1.flat();
 console.log(newArr1, "newArr1");
 // 方案三:递归
 const newArr2 = [];
 function jiangwei(arr) {
   arr.forEach((item) => {
     if (Array.isArray(item)) {  //判断是否为数组
       jiangwei(item);       //是数组继续调用
     } else {
       newArr2.push(item);  //不是数组直接推入
     }
   });
 }
 jiangwei(arr1);
 console.log(newArr2, "newArr2");