我想问一下创建这样的数组的有效方法:
[ 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;
}
答案 0 :(得分:2)
您可以使用Array.from
函数作为值。
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;
答案 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)
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));