Javascript 创建重复值的JS数组
我想询问创建此类阵列的有效方法: [ 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++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
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