是否有一种简单的方法可以使嵌套数组变平?

rsk*_*k82 12 javascript arrays

那是为了这个:

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

成:

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

Che*_*ent 25

var flattened = [[0, 1], [2, 3], [4, 5]].reduce(function(a, b) {
  return a.concat(b);
});
// flattened is [0, 1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

值得注意的是,IE 8及更低版本不支持reduce.

developer.mozilla.org参考

  • 这不符合OP的要求.它产生["dog","cat",["chicken","bear"],"mouse","horse"],将内部数组保留为数组,而不是将其元素展平. (2认同)

elc*_*nrs 23

在现代浏览器中,您可以在没有任何外部库的情况下执行此操作:

Array.prototype.flatten = function() {
  return this.reduce(function(prev, cur) {
    var more = [].concat(cur).some(Array.isArray);
    return prev.concat(more ? cur.flatten() : cur);
  },[]);
};

console.log([['dog','cat',['chicken', 'bear']],['mouse','horse']].flatten());
//^ ["dog", "cat", "chicken", "bear", "mouse", "horse"]
Run Code Online (Sandbox Code Playgroud)


Cra*_*g M 10

抓住underscore.js并使用flatten函数.

_.flatten([ ['dog','cat', ['chicken', 'bear'] ],['mouse','horse'] ]);
Run Code Online (Sandbox Code Playgroud)


vip*_*yal 7

这个班轮代码怎么样?

console.log([['dog', 'cat', ['chicken', 'bear']], [['mouse', 'horse'], 'lion']].join().split(','));
Run Code Online (Sandbox Code Playgroud)

基本上连接将使逗号分隔的字符串从嵌套数组和使用拆分你可以得到1d数组,好吗?奖金它也适用于所有主流浏览器:)


And*_*icz 5

ChewOnThis_Trident解决方案的小修复,它完美无缺:

Array.prototype.flatten = function() {
    return this.reduce(function(a, b) {
        return a.concat(b);
    }, []);
};
Run Code Online (Sandbox Code Playgroud)