导航


HTML

CSS

JavaScript

浏览器 & 网络

版本管理

框架

构建工具

TypeScript

性能优化

软实力

算法

UI、组件库

Node

冷门技能

针对性攻坚(TODO)


concat 合并两个或多个数组

var arr1 = ['a', 'b', 'c'];
var arr2 = [1, 2, 3];
var arr3 = arr1.concat(arr2);
console.log({
	arr1, arr2, arr3
});

Untitled

const arr = [1].concat([1,2,[2,3]])
console.log(arr); // [ 1, 1, 2, [ 2, 3 ] ]

ES6 扩展运算符 ... 合并数组

let a = [1, 2, 3]
let b = [0, ...a, 4, 5]
console.log(a, b); //  [ 1, 2, 3 ] [ 0, 1, 2, 3, 4, 5 ]

⭐️ slice 浅拷贝数组的元素

var arr = [
  'Lance',
  {
    a: {
      b: {
        c: 3
      }
    }
  }
]
var arr2 = arr.slice()
arr2[1].a.b = 3
console.log(arr, arr2) // [ 'Lance', { a: { b: 3 } } ] [ 'Lance', { a: { b: 3 } } ]

begin 参数

如果传负数 ,表示从原数组中的倒数第几个元素开始提取

var arr = ['l', 'a', 'n', 'c', 'e'];
var arr1 = arr.slice(-3, -1);
console.log(arr1);

Untitled

var arr = ['l', 'a', 'n', 'c', 'e'];
var arr1 = arr.slice(-3, 1);
console.log(arr1);

Untitled

如果省略,从索引 0 开始。

var arr = ['l', 'a', 'n', 'c', 'e'];
var arr1 = arr.slice();
console.log(arr1);

Untitled

⭐️ 如果超出原数组的索引范围,则会返回空数组。

var arr = ['l', 'a', 'n', 'c', 'e'];
var arr1 = arr.slice(10);
console.log(arr1); // []

Untitled

⭐️ end 参数

提取终止处的索引(从 0 开始),在该索引处结束提取原数组元素。slice 会提取原数组中索引从 begin 到 end 的所有元素(包含 begin,但不包含 end)。

正数

slice(1, 4) 会提取原数组中从第二个元素开始一直到第四个元素的所有元素 (索引为 1, 2, 3的元素)。

var arr = ['l', 'a', 'n', 'c', 'e'];
var arr1 = arr.slice(1, 4);
console.log(arr1);

Untitled

⭐️ 负数

如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。

var arr = ['l', 'a', 'n', 'c', 'e'];
var arr1 = arr.slice(1, -2);
console.log(arr1);

Untitled

省略不传 or 大于数组的长度

如果 end 被省略,或者 end 大于数组的长度,则 slice 会一直提取到原数组末尾。

var arr = ['l', 'a', 'n', 'c', 'e'];
var arr1 = arr.slice(3, 10);
console.log(arr1); // ['c', 'e']

Untitled

⭐️ join 数组转字符串