在python中,您可以执行以下操作:
arr = [1,2,3] * 3
print(arr)
输出:
[1,2,3,1,2,3,1,2,3]
在Java脚本中是否有一种简洁的方法?我能想到的最好的东西是:
let arr2 = [...arr, ...arr, ...arr]
但是如果我想做100次,那将是不切实际的。在python中,我会将其乘以100。
答案 0 :(得分:6)
您可以这样做:
var repeated = [].concat(... new Array(100).fill([1, 2, 3]));
这将创建给定长度的数组(此处为100),并使用要重复的数组([1, 2, 3]
)将其填充。然后将该数组作为参数列表传播到[].concat()
。
哦,等一下
var repeated = new Array(100).fill([1, 2, 3]).flat();
会短一些。
答案 1 :(得分: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)
答案 2 :(得分:3)
您可以创建具有所需长度的数组并映射值。
var array = [1, 2, 3],
result = Array.from({ length: 3 * array.length }, (_, i) => array[i % array.length]);
console.log(result);
答案 3 :(得分:1)
一种快速的方法是加入数组,使用string.repeat()重复该数组,然后将其拆分,最后使用ES6 Spreads
另一个答案可能更好。这只是一个简单的单线。
let arr = [1, 2, 3];
let res = [...arr.join("").repeat(3).split("").map(Number)];
console.log(res);
答案 4 :(得分:0)
简单明了:
var n=4; //times //put 100
var array = [1,2,3];
var newarray = [];
while(n--){ var newarray = newarray.concat(array); }
alert(newarray);
答案 5 :(得分:-1)
尝试一下:
function fillArray(value, len) {
if (len == 0) return [];
var a = [value];
while (a.length * 2 <= len) a = a.concat(a);
if (a.length < len) a = a.concat(a.slice(0, len - a.length));
return a;
}
它在每次迭代中将数组加倍,因此它可以创建很少迭代的非常大的数组。