有没有一种简单的方法可以将嵌套数组变成平面的?

14

将这个:

[ ['dog','cat', ['chicken', 'bear'] ],['mouse','horse'] ]

转换成:

['dog','cat','chicken','bear','mouse','horse']


2
你可以简单地用空字符串替换所有的 [],然后添加一个开头和结尾的括号。 - pimvdb
1
那个东西到底应该叫什么,是对象还是数组? - rsk82
1
一个数组。请查看http://tech.karbassi.com/2009/12/17/pure-javascript-flatten-array/。 - Swift
@Mike,那个页面上的代码非常可怕,依赖于解析Array.prototype.toString()的输出。我的下面的代码确实可以工作。 - Alnitak
使用扁平化方法 arr.flat(Infinity); - Mahesh Jamdade
12个回答

1
这就是为什么我喜欢 JavaScript 的原因:

function flattenArray(source) {
  return source.toString().split(',');
}

flattenArray([['dog', 'cat', ['chicken', 'bear']], ['mouse', 'horse']]);
// -> ['dog','cat','chicken','bear','mouse','horse']

2
当数组很小且单词内部没有“,”时,它很酷,但一旦增长,性能可能会成为问题。 - calbertts

0

ES6 的做法是

[['a', 'b'], ['c', 'd']].reduce((x,v) => [...x, ...v], [])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接