Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何';重复';数组n次_Javascript_Arrays - Fatal编程技术网

Javascript 如何';重复';数组n次

Javascript 如何';重复';数组n次,javascript,arrays,Javascript,Arrays,在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。您可以这样做: var repeated = [].concat(... new Array(100).fill([1

在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。

您可以这样做:

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();
会短一点。

试试这个:

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;
}
函数填充数组(值,len){
如果(len==0)返回[];
var a=[值];

而(a.length*2您可以创建一个具有所需长度的数组并映射值

var数组=[1,2,3],
result=Array.from({length:3*Array.length},(_,i)=>Array[i%Array.length]);
console.log(result);
用于创建长度为乘数的数组,其中每个项都包含原始数组。然后使用转换为单个数组:

const multipyarray=(arr,length)=>
Array.from({length},()=>arr.flat()
常数arr=[1,2,3]
常数arr2=多天线(arr,3)
console.log(arr2)
简单明了:

var n=4;//次//放入100
var数组=[1,2,3];
var newarray=[];
而(n--){var newarray=newarray.concat(array);}

警报(newarray);
一种快速方法是加入数组,使用string.repeat()重复它,然后拆分它,最后使用ES6扩展

另一个答案可能更好。这只是一个简单的一行

让arr=[1,2,3];
让res=[…arr.join(“”)。repeat(3)。split(“”)。map(Number)];

console.log(res);
你可以使用string
repeat
方法,使用
join
split
将数组转换为一个强数组和一个强数组?@RobinZigmond对于一个对象数组来说是有问题的。好的观点@Pointy,出于某种原因,我认为它是一个字符串数组,而OP显然是在谈论数字“排序”虽然适用于数字。与对象不同!)数组(100*3)。fill().map((v,i)=>[1,2,3][i%3])这不会生成所需的输出或满足“简明”的要求。
console.log(var);
这可能应该是
console.log(数组);
,仍然无法生成所需的result@LucaKiebel谢谢,修好了。现在它工作正常;-)通过ovwerwriting
array
,在你总是将数组的大小增加一倍之前。我喜欢这个,因为它是一个简单易读且有意义的单行程序。来自python,这让我感觉更自然。请注意。@Jeto是的,这是一个很好的观点,尽管我承认这让我非常不舒服,但我想知道它的效率有多高。@MaxWaterman如果你想对数组的每个元素做点什么,这本质上是一个线性时间运算方法在我看来,它将来会派上用场。依我看,这是最有效的方法,似乎相当于malloc后跟数组元素上的单个循环。其他解决方案似乎涉及数组元素上的多个循环。