说我有一个数组:
[1,2,3]
我想要一个数组:
[1,2,3,1,2,3]
有没有一种方法可以在不循环遍历数组并且不压入每个元素的情况下完成
?答案 0 :(得分:8)
答案 1 :(得分:5)
答案 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}, [] )