如何"重复"一个数组n次

Oam*_*nji 4 javascript arrays

在python中你可以做到:

arr = [1,2,3] * 3
print(arr)
Run Code Online (Sandbox Code Playgroud)

输出:

[1,2,3,1,2,3,1,2,3]
Run Code Online (Sandbox Code Playgroud)

在java脚本中有这种简洁的方法吗?我能想到的最好的是:

let arr2 = [...arr, ...arr, ...arr]
Run Code Online (Sandbox Code Playgroud)

但如果我想这样做100次,那将是不切实际的.在python中我会将它乘以100.

Poi*_*nty 6

你可以这样做:

var repeated = [].concat(... new Array(100).fill([1, 2, 3]));
Run Code Online (Sandbox Code Playgroud)

这将创建一个给定长度的数组(此处为100)并使用要重复的数组填充它([1, 2, 3]).然后将该数组作为参数列表传播到[].concat().

哦等等

var repeated = new Array(100).fill([1, 2, 3]).flat();
Run Code Online (Sandbox Code Playgroud)

会有点短.

  • 请注意,[您也可以省略“new”关键字](/sf/answers/574399661/)。 (3认同)
  • @Jeto 是的,很好,但我承认这让我感到非理性的不舒服 (2认同)

Nin*_*olz 6

您可以创建一个具有所需长度的数组并映射这些值。

var array = [1, 2, 3],
    result = Array.from({ length: 3 * array.length }, (_, i) => array[i % array.length]);

console.log(result);
Run Code Online (Sandbox Code Playgroud)


Ori*_*ori 6

使用Array.from()创建与所述乘数,其中,每个项目包含原始阵列的长度的阵列.然后使用Array.flat()转换为单个数组:

const multiplyArray = (arr, length) => 
  Array.from({ length }, () => arr).flat()

const arr = [1,2,3]
const arr2 = multiplyArray(arr, 3)

console.log(arr2)
Run Code Online (Sandbox Code Playgroud)