JS 从对象数组中获取所有对象键的并集

Pri*_*hai 0 javascript arrays object ecmascript-6

我有以下对象数组:

var all = [
{f1: "v1", f2: "v2"},
{f1: "v1", f2: "v2", f3: "v3"},
{f1: "v1", f2: "v2", f3: "v3", f4: "v4"},
{f1: "v1", f2: "v2", f3: "v3", f4: "v4", fn: "vn"}
];
Run Code Online (Sandbox Code Playgroud)

期望的输出:

[f1, f2, f3, f4, f5, ...., fn];
Run Code Online (Sandbox Code Playgroud)

目前使用:

all.reduce((sum, item) => ([...new Set([...sum, ...Object.keys(item)])]), []);
Run Code Online (Sandbox Code Playgroud)

工作示例:codepen

任何使用 es6 或任何新的 js 功能的建议,以获得更好的性能。

Cer*_*nce 5

您可以将它们压平为单个对象,然后获取密钥。

var all = [
{f1: "v1", f2: "v2"},
{f1: "v1", f2: "v2", f3: "v3"},
{f1: "v1", f2: "v2", f3: "v3", f4: "v4"},
{f1: "v1", f2: "v2", f3: "v3", f4: "v4", fn: "vn"}
];

const output = Object.keys(Object.assign({}, ...all));
console.log(output);
Run Code Online (Sandbox Code Playgroud)