如何在自身内复制JavaScript数组?

时间:2019-03-22 15:26:36

标签: javascript arrays

说我有一个数组:

[1,2,3]

我想要一个数组:

[1,2,3,1,2,3]

有没有一种方法可以在不循环遍历数组并且不压入每个元素的情况下完成

5 个答案:

答案 0 :(得分:8)

您可以使用Array.prototype.concat()

let array1 = [1,2,3]
console.log(array1.concat(array1))

答案 1 :(得分:5)

您可以使用spread syntax

let array = [1,2,3];
array.push(...array);
console.log(array)

答案 2 :(得分:3)

如果您要重复数组n次,则可以这样使用Array.from()flatMap

let duplicate = (arr, n) => Array.from({length: n}).flatMap(a => arr)

console.log(duplicate([1,2,3], 2))

答案 3 :(得分:2)

这是ES6使用concat的方式:

let array1 = [1,2,3]
array1 = [...array1, ...array1]
console.log(array1)

这是您想要的长度数:

let array1 = [1,2,3];
let ln = array1.length;
let times = ln * 2;
array1 = Array.from({length:times}, (e, i)=>array1[i%ln])
console.log(array1)

如果愿意,您可以停下来一定长度。例如:

// result: [1,2,3,1,2]
let array1 = [1,2,3];
let ln = array1.length;
let times = ln * 2 - 1;
array1 = Array.from({length:times}, (e, i)=>array1[i%ln])
console.log(array1)

答案 4 :(得分:0)

这是带有reduce的变体

[1, 2, 3].reduce( (acc, item, index, arr) => { acc[index] = acc[index+arr.length] = item; return acc}, [] )