根据对象值创建列表

时间:2019-02-01 02:34:53

标签: javascript arrays object

我需要从许多对象创建一个列表(键)(在本示例中,我将使用3):

{Year: "2016", A: "2.015", B: "1.959"}
{Year: "2017", A: "1.200", C: "2.247"}
{Year: "2018", A: "1.301", C: "2.056", D: "1"}

要得到的结果是:Year,A,B,C,D。我需要保留值Year并合并其余值。我该怎么办?

编辑:

我已经做到了

json = [
    {Year: "2016", A: "2.015", B: "1.959"},
    {Year: "2017", A: "1.200", C: "2.247"},
    {Year: "2018", A: "1.301", C: "2.056", D: "1"}
];
keys= Object.keys(json[0]); // console.log(keys) = Year,A,B

我正在从json的第一个对象中读取键,但是现在我需要将每个对象和它们的键混合在一起

5 个答案:

答案 0 :(得分:2)

简单-使用reduceObject.keys

const data = [{
  Year: "2016",
  A: "2.015",
  B: "1.959"
}, {
  Year: "2017",
  A: "1.200",
  C: "2.247"
}, {
  Year: "2018",
  A: "1.301",
  C: "2.056",
  D: "1"
}];

const output = data.reduce((acc, val) => {
  Object.keys(val).forEach(key => {
    if (!acc.includes(key)) {
      acc.push(key);
    }
  });
  return acc;
}, []);

console.log(output);

答案 1 :(得分:1)

使用forEachSet

var a=[{Year: "2016", A: "2.015", B: "1.959"},
{Year: "2017", A: "1.200", C: "2.247"},
{Year: "2018", A: "1.301", C: "2.056", D: "1"}]
var arr=[];
a.forEach((e)=>{
arr=[...arr,...Object.keys(e)]
})
arr=[...new Set(arr)]
console.log(arr)

答案 2 :(得分:1)

var a=[{Year: "2016", A: "2.015", B: "1.959"}, {Year: "2017", A: "1.200", C: "2.247"}, {Year: "2018", A: "1.301", C: "2.056", D: "1"}];

console.log([
  ...new Set(a.map(e. => Object.keys(e)).flat())
].join(','));

答案 3 :(得分:0)

下面的代码将生成一个Set唯一键。然后可以轻松地将其转换回数组或字符串。

const data = [
    {Year: "2016", A: "2.015", B: "1.959"},
    {Year: "2017", A: "1.200", C: "2.247"},
    {Year: "2018", A: "1.301", C: "2.056", D: "1"}
];

const keys = new Set([].concat(...data.map(o => Object.keys(o))));

console.log([...keys]);
console.log([...keys].join(','));

注意: [].concat[...twoDimensionalArray]技巧可以用对flatMap()的调用来代替-尽管目前仍然缺少对浏览器的支持。 < / p>

答案 4 :(得分:0)

遍历每个对象,取出密钥并将其添加到print_dog

console.log('cat');

相关问题