我想生成以下数组:
[3, 3, 3, 3, 4, 4, 5, 5, 5]
有3个不同的值应重复m
,n
和k
次。最简单的方法是什么?
如果我Array(m + n + k).fill(...).fill(...).fill(...)
fill
次呼叫的起点和终点看起来不是很直接。
答案 0 :(得分:3)
单独生成数组,然后将它们组合成一个最终数组
[
...Array(4).fill(3),
...Array(2).fill(4),
...Array(3).fill(5)
]
答案 1 :(得分:0)
创建一个values
数组和一个repeat
数组。使用迭代values
,并返回一个填充了值的新数组。将Array.map()
展平为spreading:
const values = [3, 4, 5];
const repeat = [4, 2, 3];
const arr = [].concat(...values.map((v, i) => new Array(repeat[i]).fill(v)));
console.log(arr);

答案 2 :(得分:0)
var arrValues = [3,4,5];
var arrRepeats = [4,2,3];
var arr = [];
for(var i =0; i< arrRepeats.length;i++){
arr.push(Array(arrRepeats[i]).fill(arrValues[i]));
}
console.log(arr)
&#13;
或者
&#13;&#13;&#13;&#13;&#13;var arrValues = [3,5,4]; var arrRepeats = [4,2,3]; let arr = []; for(var i =0; i< arrRepeats.length; i++){ for(var j=0; j<arrRepeats[i];j++){ arr.push(arrValues[i]); } } console.log(arr)
如果你想生成数组并将它们组合起来,你可以这样做
&#13;&#13;&#13;&#13;&#13;var arrValues = [3,5,4]; var arrRepeats = [4,2,3]; // m, n, k var mainArr = []; for(var i =0; i< arrRepeats.length; i++){ var arr = []; for(var j =0; j < arrRepeats[i]; j++){ arr.push(j); arr.fill(arrValues[i]); } mainArr.push(arr); } console.log(mainArr)