此问题已在此处有答案:
Merge/flatten an array of arrays(85个回答)
4年前关闭。
我有这个数组:
array = ['bla', ['ble', 'bli'], 'blo', ['blu']]
我希望它是
array = ['bla', 'ble', 'bli', 'blo', 'blu']
有没有一个简单的函数可以给予这个特定的结果?
此问题已在此处有答案:
Merge/flatten an array of arrays(85个回答)
4年前关闭。
我有这个数组:
array = ['bla', ['ble', 'bli'], 'blo', ['blu']]
我希望它是
array = ['bla', 'ble', 'bli', 'blo', 'blu']
有没有一个简单的函数可以给予这个特定的结果?
4条答案
按热度按时间brtdzjyr1#
2020年更新:
您现在可以在所有现代浏览器中使用
.flat()
。var newArray = arr.flat([depth])
您可以使用
concat
来执行以下操作:如果你需要递归地做(嵌套的嵌套数组),我可能会这样做:
ewm0tg9j2#
有一个新的数组原型函数叫做***flat***,目前微软浏览器和三星互联网都不支持这个函数,语法很简单:
qv7cva1a3#
**编辑:**请看Dave的答案或p. s.w. g的答案-他们是上级的。这段代码是可怕的,不应该被使用(我不能删除一个接受的答案)。
你可以这样做:
Demo
说明:
这很简单。
toString()
在一个包含数组的数组上创建一个字符串,其中所有元素都在顶层,因此[['abc']].toString()
的结果是'abc',而不管它在数组中有多“深”。之后,您只需使用String.prototype.split
将得到的字符串拆分为一个数组,就完成了目标jv2fixgn4#
已经提供的其他答案是好的,但这里是我的递归方法的实现,它将扁平化任意嵌套到任何深度的数组:
Demonstration
请注意,这依赖于
Array.isArray
,它可能在旧的浏览器中不可用。如果这是一个问题,您可以用另一个数组测试来替换它(例如arr[i].constructor == Array
)