我有这个数组:
array = ['bla', ['ble', 'bli'], 'blo', ['blu']]
Run Code Online (Sandbox Code Playgroud)
我想要它
array = ['bla', 'ble', 'bli', 'blo', 'blu']
Run Code Online (Sandbox Code Playgroud)
是否有一个简单的功能可以给我这个特定的结果?
dav*_*ave 16
你可以concat这样做:
array = [].concat.apply([], array)
Run Code Online (Sandbox Code Playgroud)
如果你需要递归(嵌套嵌套数组),我可能会这样做:
function flatten(arr, result) {
if (typeof result === "undefined") {
result = [];
}
for (var i = 0; i < length; i++) {
if (Array.isArray(arr[i])) {
flatten(arr[i], result);
} else {
result.push(arr[i]);
}
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
有一个名为flat的新数组原型函数.目前,Microsoft浏览器和Samsung Internet不支持此功能.语法很简单:
array.flat([depth])
Run Code Online (Sandbox Code Playgroud)
depth是一个可选变量,用于指定要展平的图层数.默认值为1. 在此处阅读更多相关信息.
编辑:请看看戴夫的答案或 pswg 的答案 - 他们是优越的。该代码很糟糕,不应使用(我无法删除已接受的答案)。
你可以这样做:
var arr = ['bla', ['ble', 'bli'], 'blo', ['blu']];
var newArr = arr.toString().split(',');
Run Code Online (Sandbox Code Playgroud)
解释:
这很简单。toString()在包含数组的数组上创建一个包含顶层所有元素的字符串,因此[['abc']].toString()无论数组中的“深度”如何,结果都是“abc”。之后,您只需使用将获得的字符串拆分为数组String.prototype.split即可完成您的目标