在不创建二维数组(JavaScript)的情况下通过推送创建一个包含来自其他数组的值的数组

我想创建一个数组,它的值从 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 = 4

let 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]]


有人能说出为什么没有按我预期的那样工作吗?


慕虎7371278
浏览 101回答 3
3回答

翻过高山走不出你

使用deck.push(...suit)代替deck.push(suit)。这会将单个数字推送到deck数组,而不是将整个suit数组推送到数组的索引deck。let suit = Array.from(new Array(13), (x, index) => index + 1)let suitsNumber = 4let deck = []for (let i = 0; i < suitsNumber; i++) {&nbsp; deck.push(...suit)}console.log(deck)

开心每一天1111

您可以仅使用包含其他 4 个子数组的主数组之一的concat扩展语法...。const&nbsp;result&nbsp;=&nbsp;[].concat(...Array(4).fill(Array.from(Array(13),&nbsp;(_,&nbsp;i)&nbsp;=>&nbsp;i&nbsp;+&nbsp;1))) &nbsp;console.log(result)或者您可以flat()在包含其他 4 个子数组的数组上使用方法。const&nbsp;result&nbsp;=&nbsp;Array(4).fill(Array.from(Array(13),&nbsp;(_,&nbsp;i)&nbsp;=>&nbsp;i&nbsp;+&nbsp;1)).flat() &nbsp;console.log(result)

元芳怎么了

你也可以这样做const&nbsp;suit&nbsp;=&nbsp;Array.from(new&nbsp;Array(13),&nbsp;(x,&nbsp;index)&nbsp;=>&nbsp;index&nbsp;+&nbsp;1) const&nbsp;deck&nbsp;=&nbsp;Array.from(new&nbsp;Array(suit.length&nbsp;*&nbsp;4),&nbsp;(_,&nbsp;index)&nbsp;=>&nbsp;suit[index&nbsp;%&nbsp;13])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript