JavaScript 词条目录
前端Wiki/JavaScript/进阶/对象与数组

数组常用方法

数组方法多,先记住一个分类标准:会不会改变原数组。增删类的 push/pop/shift/unshift/splice/sort 会改变原数组;查找截取类的 indexOf/includes/slice/concat/join 不会。

  • push/pop:尾部加/删;unshift/shift:头部加/删;
  • splice(start, count, ...插入项):万能的增删改,一个方法干三件事;
  • slice(start, end):截取 [start, end) 区间,常用来复制数组;
  • indexOf/includes:查找元素位置或是否存在;
  • join('-'):拼接成字符串;concat:合并数组。

区分 splice 和 slice 只需记住:带 p 的会改原数组(p 可以联想「破坏 pierce」),slice 安全无副作用。

本节要点push/pop/shift/unshift/splice/sort 改原数组;slice/indexOf/includes/join 不改;splice 是万能增删改。
JavaScript
const arr = ['a', 'b', 'c', 'd'];

// 尾部与头部增删(改变原数组)
arr.push('e');            // 尾部加 → a,b,c,d,e
arr.pop();                // 尾部删 → a,b,c,d
arr.unshift('z');         // 头部加 → z,a,b,c,d
arr.shift();              // 头部删 → a,b,c,d
console.log(arr);

// splice:从下标1删1个,并插入'B'(改变原数组)
arr.splice(1, 1, 'B');
console.log(arr);

// 查找(不改变原数组)
console.log(arr.indexOf('c'));    // 2(找不到返回 -1)
console.log(arr.includes('a'));   // true

// 截取、合并、转字符串
console.log(arr.slice(1, 3));     // 截取下标 [1,3)
console.log(arr.slice());         // 常用套路:复制数组
console.log(['x'].concat(arr));   // 合并
console.log(arr.join('-'));       // 'a-B-c-d'