创建重复值的JS数组

时间:2018-01-30 20:45:17

标签: javascript arrays function for-loop while-loop

我想问一下创建这样的数组的有效方法:

[
    1, 1, 1, 1, 1, 1,
    2, 2, 2, 2, 2, 2,
    3, 3, 3, 3, 3, 3
    ...
    n, n, n, n, n, n
]

每6件物品加上1 ++。

function createFaces(n){
    var array = [];
    var l = 1; 
    while(n > 0){
        for(var i = 0; i < 6; i++){
            array.push(l)
        }
        l++;
        n--;
    }
    return array;
}

4 个答案:

答案 0 :(得分:2)

您可以使用Array.from函数作为值。

&#13;
&#13;
function createFaces(n) {
    return Array.from({ length: 6 * n }, (_, i) => Math.floor(i / 6) + 1);
}

console.log(createFaces(7));
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

答案 1 :(得分:1)

要创建一个用值v填充的大小为n的数组,您可以执行

Array(n).fill(v);

在你的职能范围内:

function createFaces(n){
    var array = [];
    for (var i=1; i <= n; i++) {
      array = array.concat(Array(6).fill(i));
    }
    return array;
}

答案 2 :(得分:0)

如果你想要一个平面阵列......

function createFaces(n, x){
    for(var i=0, a=[]; i<n; a.push(...Array(x).fill(i)) && i++){}
    return a;
}

console.log(createFaces(7, 6));

答案 3 :(得分:0)

使用Array.prototype.map()功能

let fill = function(length, threshold) {
  let i = 1;
  return new Array(length * threshold).fill().
            map((_, idx) => 
                (idx + 1) % threshold === 0 ? i++ : i);
};

console.log(fill(7, 6));