Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 创建重复值的JS数组_Javascript_Arrays_Function_For Loop_While Loop - Fatal编程技术网

Javascript 创建重复值的JS数组

Javascript 创建重复值的JS数组,javascript,arrays,function,for-loop,while-loop,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 ] [ 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3 ... n、 n,n,n,n,n,n ] 每6项增加1++ function createFaces(n){ var array = []; v

我想询问创建此类阵列的有效方法:

[ 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3 ... n, n, n, n, n, n ] [ 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3 ... n、 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;
}
函数createFaces(n){
var数组=[];
var l=1;
而(n>0){
对于(变量i=0;i<6;i++){
数组。推送(l)
}
l++;
n--;
}
返回数组;
}

要创建一个大小为n、填充值为v的数组,可以执行以下操作

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;
}
函数createFaces(n){
var数组=[];
对于(var i=1;i,您可以使用函数作为值

函数createFaces(n){
返回数组.from({length:6*n},({,i)=>Math.floor(i/6)+1);
}
console.log(createFaces(7));

.as控制台包装{max height:100%!important;top:0;}
如果您想要平面阵列

函数createFaces(n,x){
对于(var i=0,a=[];i使用函数

let fill=函数(长度,阈值){
设i=1;
返回新数组(长度*阈值).fill()。
map(ux,idx)=>
(idx+1)%threshold==0?i++:i);
};

console.log(fill(7,6));
您希望添加多少行?您的实现出了什么问题并不重要(例如6)?这没有错,但我尝试找到更有效的方法。您编写的方法只遍历每个目标元素数组一次,开销最小。您可以使它稍微更有效(可能)通过使它成为一个从
i=6
i=6*n+5
的单循环,并将
i/6
推到数组中。类似地,您可以消除一个外部索引。这几乎是毫无意义的微观优化。这也创建了一个数组,而这与OP的代码所做的并不完全相同。要做完全相同的事情
for
循环中的
行应该是
array=array.concat(array(6.fill)(i));
Oops,我看到了一个数组数组,其中一个数组不存在。对concat.nice方法是
array.from