查找对象数组中的所有键
鉴于我有一个从包含对象的数据库返回的数组,
var jsObjects = [
{a: 1, b: 2},
{a: 3, b: 4, c: 66},
{a: 5, b: 6, c: 55, d: 66},
{a: 7, b: 8, c: 12, e: 15}
];
如何获取对象的所有键?我一直在使用它来获取密钥,但是我注意到索引 0 并不总是拥有所有的密钥。因此问题就来了。
let columns = Object.keys(jsObjects[0]),
但是,第一个索引并不总是包含所有列。
我想要的输出:
["a", "b", "c", "d", "e"]
回答
集合擅长删除重复项:
const jsObjects = [
{a: 1, b: 2},
{a: 3, b: 4, c: 66},
{a: 5, b: 6, c: 55, d: 66},
{a: 7, b: 8, c: 12, e: 15}
];
const keys = [...new Set(jsObjects.flatMap(Object.keys))];
console.log(keys);
回答
您可以使用键的计数创建一个对象并从计数中获取键。
const
objects = [{ a: 1, b: 2 }, { a: 3, b: 4, c: 66 }, { a: 5, b: 6, c: 55, d: 66 }, { a: 7, b: 8, c: 12, e: 15 }],
result = Object.keys(objects.reduce((r, o) => {
Object.keys(o).forEach(k => r[k] = true);
return r;
}));
console.log(result);