【问题标题】:Convert the array with nested arrays to the new array without nested arrays (JavaScript) [duplicate]将具有嵌套数组的数组转换为没有嵌套数组的新数组(JavaScript)[重复]
【发布时间】:2022-01-13 10:17:45
【问题描述】:

我的数组 "arrs" 带有嵌套数组,如下所示:

let arrs = ["Apple", ["Peach", "Grape"], [["Pear", "Kiwi"], ["Lemon"]]];

现在,我想将数组 "arrs" 转换为没有嵌套数组的新数组 "newArr",如下所示:

let newArr = [ "Apple", "Peach", "Grape", "Pear", "Kiwi", "Lemon" ];

我创建了将 "arrs" 转换为 "newArr" 而没有嵌套数组的代码

let newArr = [arrs[0], arrs[1][0], arrs[1][1], arrs[2][0][0], arrs[2][0][1], arrs[2][1][0]];

console.log(newArr); // [ "Apple", "Peach", "Grape", "Pear", "Kiwi", "Lemon" ]

这是完整的可运行代码

let arrs = ["Apple", ["Peach", "Grape"], [["Pear", "Kiwi"], ["Lemon"]]];

let newArr = [arrs[0], arrs[1][0], arrs[1][1], arrs[2][0][0], arrs[2][0][1], arrs[2][1][0]];

console.log(newArr); // [ "Apple", "Peach", "Grape", "Pear", "Kiwi", "Lemon" ]

但是,我想让这段代码更简单、更酷或更聪明。有没有办法做到这一点?

let newArr = [arrs[0], arrs[1][0], arrs[1][1], arrs[2][0][0], arrs[2][0][1], arrs[2][1][0]];

console.log(newArr); // [ "Apple", "Peach", "Grape", "Pear", "Kiwi", "Lemon" ]

【问题讨论】:

  • arrs.flat(2).

标签: javascript arrays json multidimensional-array frontend


【解决方案1】:

您可以将 "flat()""2" 一起使用:

let arrs = ["Apple", ["Peach", "Grape"], [["Pear", "Kiwi"], ["Lemon"]]];

let newArr = arrs.flat(2);

console.log(newArr); // [ "Apple", "Peach", "Grape", "Pear", "Kiwi", "Lemon" ]

此外,您可以将 "flat()""Infinity" 一起用于任何深度的嵌套数组

let arrs = ["Apple", ["Peach", "Grape"], [["Pear", "Kiwi"], ["Lemon"]]];

let newArr = arrs.flat(Infinity);

console.log(newArr); // [ "Apple", "Peach", "Grape", "Pear", "Kiwi", "Lemon" ]

【讨论】:

  • 希望数组中的字符串不包含逗号。
  • 非常好和不常见的方式!
  • @Ivar,你说得对,我的错
  • @Ivar,你说得对。如果字符串包含逗号,我使用 join() 和 split() 的方式不起作用。谢谢你提醒我。
  • ["Apple", ["Peach", "Grape"], [["Pear", "Kiwi"], ["Lemon"]]].toString().split(',') - 也有效
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
  • 2021-04-07
  • 1970-01-01
  • 2022-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多