将Javascript子数组转换为一个数组

将Javascript子数组转换为一个数组,javascript,arrays,Javascript,Arrays,我有这个阵列: array = ['bla', ['ble', 'bli'], 'blo', ['blu']] 我希望是这样 array = ['bla', 'ble', 'bli', 'blo', 'blu'] 有没有一个简单的函数可以给我这个特定的结果?为2020年更新: 你现在可以在几乎所有的现代浏览器中使用(即是唯一的例外) var newArray=arr.flat([depth]) let result=['bla'、['ble'、['bli']、'blo'、['blu']]平

我有这个阵列:

array = ['bla', ['ble', 'bli'], 'blo', ['blu']]
我希望是这样

array = ['bla', 'ble', 'bli', 'blo', 'blu']
有没有一个简单的函数可以给我这个特定的结果?

为2020年更新:

你现在可以在几乎所有的现代浏览器中使用(即是唯一的例外)

var newArray=arr.flat([depth])

let result=['bla'、['ble'、['bli']、'blo'、['blu']]平面()
控制台日志(结果);
结果=['bla'、['ble'、['bli'、['bom']]、'blo'、['blu']]].flat()
控制台日志(结果);
结果=['bla'、['ble'、['bli'、['bom']]、'blo'、['blu']]。平面(2)
控制台日志(结果);
结果=['bla'、['ble'、['bli'、['bom']]、'blo'、['blu']]平坦(无限)

控制台日志(结果)编辑:请看Dave的答案或p.s.w.g的答案-他们更优秀。这段代码很可怕,不应该使用(我不能删除一个可接受的答案)

你可以这样做:

var arr = ['bla', ['ble', 'bli'], 'blo', ['blu']];
var newArr = arr.toString().split(',');

说明:


这很简单
toString()
在包含数组的数组上创建一个包含顶层所有元素的字符串,因此
[['abc']]]。toString()
无论数组中的“深度”有多深,都会生成“abc”。之后,您只需使用
string.prototype.split
将得到的字符串拆分成一个数组,您就完成了您的目标

提供的其他答案都很好,但下面是我对递归方法的实现,该方法将任意嵌套的数组展平到任意深度:

var flatte=函数(arr){
var out=[];
对于(变量i=0;i


注意这依赖于,这在旧浏览器中可能不可用。如果这是一个问题,您可以用另一个数组测试替换它(例如,
arr[i].constructor==array

有一个新的数组原型函数称为flat。目前,Microsoft浏览器和三星互联网不支持此功能。语法很简单:

array.flat([depth])

深度是一个可选变量,指定要展平的层数。默认值为1。阅读更多信息。

拆分的问题是,如果内容是不同类型的,则会丢失该类型。如果字符串中有一个逗号,它就不起作用了。这两个点都很好@dave您的答案看起来确实很好。+1但这只适用于嵌套一层的数组。e、 g.
['bla'、['ble'、['bli']]、'blo'、['blu']
产生
['bla'、['bli']、'blo'、['blu']]