【发布时间】:2022-01-25 05:30:16
【问题描述】:
我有一个 JavaScript 数组,例如:
[["$6"], ["$12"], ["$25"], ["$25"], ["$18"], ["$22"], ["$10"]]
我将如何将单独的内部数组合并为一个:
["$6", "$12", "$25", ...]
【问题讨论】:
-
gist.github.com/Nishchit14/4c6a7349b3c778f7f97b912629a9f228 此链接描述 ES5 和 ES6 扁平化
-
所有使用
reduce+concat的解决方案都是 O((N^2)/2) ,其中作为可接受的答案(只需拨打concat)最多O(N*2) 在一个坏的浏览器上和 O(N) 在一个好的浏览器上。此外,Denys 解决方案针对实际问题进行了优化,比单个concat快 2 倍。对于reduce的人来说,编写小代码感觉很酷很有趣,但是例如,如果数组有 1000 个单元素子数组,那么所有 reduce+concat 解决方案都将执行500500 operations,而单个 concat 或简单循环将执行 1000 次操作。 -
简单用户传播算子
[].concat(...array) -
@gman reduce + concat 解决方案 O((N^2)/2) 怎么样? stackoverflow.com/questions/52752666/… 提到了不同的复杂性。
-
使用支持ES2019的最新浏览器:
array.flat(Infinity),其中Infinity是展平的最大深度。
标签: javascript arrays multidimensional-array frontend flatten