从对象列表创建属性数组

我想要做的是读取下面的这个对象数组,然后从那里构建一个包含自由值的列表。

const data = [
  {
      "house01": {
        "free": 6
      },
      "house02": {
        "free": 2
      },
      "house03": {
        "free": 1
      },
  }
]


console.log(data.map((item) => item.free))

回复

[undefined] 

预期回应

[6, 2, 1]

我不明白的是为什么结果没有按预期进行。

回答

您需要两次迭代,一次用于数组,另一次用于对象的值以获取所需的属性。

const data = [{ house01: { free: 6 }, house02: { free: 2 }, house03: { free: 1 } }];

console.log(data.flatMap(item => Object.values(item).map(({ free }) => free)));

通过拥有不需要的密钥,您需要添加过滤并获取条目以获取密钥。

const
    data = [{ house01: { free: 6 }, house02: { free: 2 }, house03: { free: 1 }, dontcountthisdata: "USA" }],
    unwanted = ['dontcountthisdata'];

console.log(data.flatMap(item => Object
    .entries(item)
    .filter(([key]) => !unwanted.includes(key))
    .map(([, { free }]) => free)
));


以上是从对象列表创建属性数组的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>