将 n 个数组合并为一个数组

use*_*203 2 javascript arrays concatenation object

假设我有一个对象,它的值是这样的数组:

obj = {
    'key1': [1,2],
    'key2': [3,4],
    'key3': [5,6],
}
Run Code Online (Sandbox Code Playgroud)

如何使用 concat 将对象的所有数组合并为一个数组。对象的键数当然是动态的,但它至少会有一个实例所需的输出是这样的:

[1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)

Yev*_*kov 9

flat()Object.values()应该做的工作:

const obj = {
        key1: [1,2],
        key2: [3,4],
        key3: [5,6]
      },
      merged = Object.values(obj).flat()

console.log(merged)
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper{min-height:100%}
Run Code Online (Sandbox Code Playgroud)

如果是不吉利的,足以应付IE或边缘,可以回退到reduce()扁平化

const obj = {
        key1: [1,2],
        key2: [3,4],
        key3: [5,6]
      },
      merged = Object.keys(obj).reduce(function(r,k){     
        return r.concat(obj[k])
      }, [])

console.log(merged)
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper{min-height:100%}
Run Code Online (Sandbox Code Playgroud)

  • 但要注意“扁平”​​支撑。在我看来,值得一提的是。 (4认同)