为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕虎7371278 2021-11-18 20:08:36
我想创建一个数组,它的值从 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)


查看完整回答
反对 回复 2021-11-18
?
开心每一天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)


查看完整回答
反对 回复 2021-11-18
?
元芳怎么了

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


查看完整回答
反对 回复 2021-11-18
  • 3 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信