在无组织的对象数组中获取所有键的有效方法

Phi*_*ide 7 javascript arrays sorting json

我想获取一个对象数组中的所有键.最初我只是抓住了数组中的第一个对象并使用了:

var keys = Object.keys(tableData[0]);
Run Code Online (Sandbox Code Playgroud)

但是当我仔细观察数据时,我注意到第一行没有包含所有需要的键.在下面的示例中,第三个项目包含所有键,但您可能遇到需要组合多个对象的所有键的情况.

var tableData = [
  { first:"jeff", last:"doe", phone: "2891" },
  { first:"sarah", phone:"this", county: "usa" }
  { first:"bob", last:"brown", county: "usa", phone: "23211" }
];
Run Code Online (Sandbox Code Playgroud)

如何获得大规模高效的对象数组中的所有唯一键?

Nen*_*car 5

您可以使用reduce()Set获得所需的结果.

var array = [
  { first:"jeff", last:"doe", phone: "2891" },
  { first:"sarah", phone:"this", county: "usa" },
  { first:"bob", last:"brown", county: "usa", phone: "23211" }
];

var keys = [...new Set(array.reduce(function(r, e) {
  r = r.concat(Object.keys(e));
  return r;
}, []))];

console.log(keys)
Run Code Online (Sandbox Code Playgroud)