如何生成一个填充了几个不同值的数组?

时间:2018-04-30 20:38:49

标签: javascript

我想生成以下数组:

[3, 3, 3, 3, 4, 4, 5, 5, 5]

有3个不同的值应重复mnk次。最简单的方法是什么?

如果我Array(m + n + k).fill(...).fill(...).fill(...) fill次呼叫的起点和终点看起来不是很直接。

3 个答案:

答案 0 :(得分:3)

单独生成数组,然后将它们组合成一个最终数组

[
  ...Array(4).fill(3), 
  ...Array(2).fill(4), 
  ...Array(3).fill(5)
]

答案 1 :(得分:0)

创建一个values数组和一个repeat数组。使用enter image description here迭代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;
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)
&#13;
&#13;
&#13;