【发布时间】:2021-10-13 20:24:53
【问题描述】:
我有以下对象数组:
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"}
];
期望的输出:
[f1, f2, f3, f4, f5, ...., fn];
目前使用:
all.reduce((sum, item) => ([...new Set([...sum, ...Object.keys(item)])]), []);
工作示例:codepen
任何使用 es6 或任何新 js 功能的建议,以获得更好的性能。
【问题讨论】:
-
目前还不是 100% 清楚您要实现的目标有 5 个来自 4 个对象的数组的结果。您是否正在尝试获取对象的最终密钥。订单有保障吗?
-
还有一个选项:
new Set(all.map(o => Object.keys(o)).flat()) -
@DamianGreen,所需的输出是“给定数组中最高键的键数组:值对对象”。
-
@FelixKling 会有更好的性能吗,因为我们有 4 个操作。
-
"desired output is "array of the keys of the heighest key:value pair object from the given array" 这与获取所有键的并集不同。它是什么现在?“它的性能会更好吗,因为我们有 4 个操作” 它不会像您的解决方案那样创建中间对象。但最终您必须实际测量不同的解决方案。
标签: javascript arrays object ecmascript-6