JavaScript的数组常用方法整理

1.数组的拼接

  • concat();链接两个或多个数组,并返回新的数组
  • 扩展运算符(...);ES6引入的扩展运算符提供了新写法
  • push();向数组尾部添加一个或多个元素,返回的是当前数组的长度
  • unshift();向数组开头添加一个或多个元素,返回的是新数组的长度
let arr1 = [1, 2, 3]; let arr2 = [4, 5, 6]; let arr3 = [7, 8, 9]; let arr4 = ['h', 'e', 'l', 'l', 'o']; let arr5 = ['h', 'e', 'l', 'l', 'o']; let arr = arr1.concat(arr2, arr3); // [1, 2, 3, 4, 5, 6, 7, 8, 9]let myArr = [...arr1, ...arr2, ...arr3]; // [1, 2, 3, 4, 5, 6, 7, 8, 9]arr4.push(1, 2, 3); console.log(arr4); // ['h', 'e', 'l', 'l', 'o', 1, 2, 3]arr4.unshift(1, 2, 3); console.log(arr5); // [1, 2, 3, 'h', 'e', 'l', 'l', 'o'] /* * 以上两种都是都是对数组的浅拷贝,两种方法生成的新 * 数组的成员都是对原数组成员的引用;如果改变原数组成员,就 * 会反应到新数组。 */

2.数组转字符串
  • join();把数组的所有元素放入一个字符串。元素通过指定的分隔符(默认是逗号)进行分隔。
  • toString();返回值与没有参数的 join() 方法返回的字符串相同,即数组元素与元素之间由逗号分隔。
let arr = [hello, nihao]; let str1 = arr.join(); // hello,nihao let str2 = arr.join(''); // hellonihao let str3 = arr.join('-'); // hello-nihao let str4 = arr.toString(); // hello,nihao

3.数组的截取
  • slice(s, e);返回一个包含从s到e(不包含该元素)的新数组,不改变原数组
  • splice(index, num, item1,.....,itemX);改方法可以删除从index开始的num个元素(如果num为0,则不会删除项目),同时item用来替换被删除的元素;返回的是被删除的元素的数组;同时会 改变原数组
let arr1 = [1, 2, 3, 4, 5]; arr1.slice(2,4); // [3,4] arr1.splice(1, 3); // [2, 3, 4]arr1= [1, 5];

4.数组元素的查找
  • indexOf(); 要查找的元素不在当前数组的话返回-1;
  • includes(); 返回布尔值
  • find()和findIndex;所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined
【JavaScript的数组常用方法整理】indexOf()使用严格相等运算符,会导致NaN的误判
[1, 2, 3].indexOf(2); // ` [1, 2, 3, 4, NaN].indexOf(NaN); // -1 [1, 2, 3, NaN].includes(NaN); //true[1, 5, 10, 15].find(function(v) { return v == 9; }) // undefined

4.其他方法
  • filter();对数组进行过滤,返回符合条件的元素组成的新数组,原数组不会改变
  • reduce(); 对数组元素进行累加,不会对空数组执行回调
  • every(); 对数组元素进行判断,所有的数组元素都符合条件返回true,否则返回false
  • some();对数组元素进行判断,只要有一个元素符合条件就返回true, 否则返回false
  • forEach()与map(),都是用来遍历数组中的每一项,区别是map的的回调函数中可以return返回值
[1, 2, 3].filter(v => { retrun v >=2; }); // [2, 3] [1, 2, 3].map(v => { return v*2; }); // [2, 4, 6]

    推荐阅读