查找对象数组中的所有键

鉴于我有一个从包含对象的数据库返回的数组,

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);


以上是查找对象数组中的所有键的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>