从对象列表创建属性数组
我想要做的是读取下面的这个对象数组,然后从那里构建一个包含自由值的列表。
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)
));