我想创建一个数组,它的值从 1 到 13,四次。最后一个数组应该有 52 个位置,如下所示:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 , 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 , 12, 13]我已经创建了用 1 到 13 的数字填充的数组let suit = Array.from(new Array(13), (x, index) => index + 1)并且想要将这个“suit”数组上的值的四倍推到一个名为“deck”的最终数组中。为此,我尝试了以下代码:let suit = Array.from(new Array(13), (x, index) => index + 1)let suitsNumber = 4let deck = []for(let i = 0; i < suitsNumber; i++ ) { deck.push(suit)}问题是生成的数组“甲板”是一个长度为 4 的二维数组,每个位置都是数组套装:[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], [1, 2, 3, 4, 5, 6, 7, 8、9、10、11、12、13]]有人能说出为什么没有按我预期的那样工作吗?
3 回答
翻过高山走不出你
TA贡献1875条经验 获得超3个赞
使用deck.push(...suit)代替deck.push(suit)。这会将单个数字推送到deck数组,而不是将整个suit数组推送到数组的索引deck。
let suit = Array.from(new Array(13), (x, index) => index + 1)
let suitsNumber = 4
let deck = []
for (let i = 0; i < suitsNumber; i++) {
deck.push(...suit)
}
console.log(deck)
开心每一天1111
TA贡献1836条经验 获得超13个赞
您可以仅使用包含其他 4 个子数组的主数组之一的concat
扩展语法...
。
const result = [].concat(...Array(4).fill(Array.from(Array(13), (_, i) => i + 1))) console.log(result)
或者您可以flat()
在包含其他 4 个子数组的数组上使用方法。
const result = Array(4).fill(Array.from(Array(13), (_, i) => i + 1)).flat() console.log(result)
元芳怎么了
TA贡献1798条经验 获得超7个赞
你也可以这样做
const suit = Array.from(new Array(13), (x, index) => index + 1) const deck = Array.from(new Array(suit.length * 4), (_, index) => suit[index % 13])
添加回答
举报
0/150
提交
取消