我正在尝试设置一个函数,该函数接受一个数组(作为第一个参数(和一个数字(作为第二个参数(,该函数返回数组的副本与第二个参数中指定的数字一样多(即,如果数组在第一个参数中是 [1,2,3],数字 4 是第二个参数, 该函数应返回 [1,2,3,1,2,3, 1,2,3 1,2,3]。提前感谢您的指导。
我已经在这个问题上停留了很长一段时间,我试图将数组相互连接,但它不起作用。当我运行代码时,我看到数组返回第二个参数上指定的数字,但它没有合并它们。我该怎么做呢?
function expand(array, number){
let arr = [];
for(var i = 0; i < number; i++){
console.log(arr.concat(array));
}
return arr;
}
expand([1,2,3], 5)
// })
我喜欢这个简洁 - 只是在一段时间循环倒计时时push()
。与concat
不同,push()
就地操作数组,而不是重新调整新数组:
function expand(array, number, res = []){
while(number-->0) res.push(...array)
return res
}
console.log(expand([1,2,3], 3))
如果你是新flat()
的游戏,你也可以使用这个单行:
const expand = (array, number) => Array(number).fill(array).flat()
console.log(expand([1, 2, 3], 3))
您需要将 Array.concat(( 返回的新数组赋回 arr
变量:
function expand(array, number)
{
let arr = [];
for (i = 0; i < number; i++)
{
arr = arr.concat(array);
}
return arr;
}
console.log(expand([1,2,3], 5));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
或者,您也可以使用递归方法:
function expand(array, number, res=[])
{
return !number ? res : expand(array, number - 1, res.concat(array));
}
console.log(expand([1,2,3], 5));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
或者,如果你的数组只由数字组成,也许你可以将 Array.from(( 与字符串实用程序 String.repeat(( 结合使用:
function expand(array, number)
{
return Array.from(array.join("").repeat(number), Number);
}
console.log(expand([1,2,3], 5));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
尝试使用Array.prototype.push()
。
var arr1 = [1,2,3];
var n=4;
var arr2 = expandArray(arr1,4);
console.log(arr2);
function expandArray(arr1,n) {
var arr3 = [];
for (var i = 0; i<n;i++) {
arr3.push(...arr1);
}
return arr3;
}