gpt4 book ai didi

javascript - 使用路径从对象中提取数据 - 包括数组中的所有数据

转载 作者:行者123 更新时间:2023-11-29 23:19:38 25 4
gpt4 key购买 nike

我正在尝试使用 LoDash 解决以下问题。我知道如何使用 for 循环解决问题,但我正在寻找解决问题的现代函数方法。


我有以下数据:

const data = {
people: [
{
name: "Bob",
vehicles: [
{
model: "Mazda"
tires: [
{ pressure: 20 },
{ pressure: 22 },
{ pressure: 23 },
{ pressure: 21 },
]
},
{
model: "Harley Davidson"
tires: [
{ pressure: 20 }
{ pressure: 25 }
]
}
]
},
{...},
{...},
{...},
]
}

我想从中提取属于每个人的每个轮胎压力的列表。所以像这样:

[20, 22, 23, 21, 20, 25, ... ]

我正在寻找的是一种可以像这样调用的方法:

const path = 'people.vehicles[*].tires[*].pressure';
const tirePressure = _.methodName(data, path);

我知道 lodash 支持一些类似的功能 - 比如 _.at(object, ['a[0].b.c', 'a[1]']); (link) ,但据我所知,它不支持折叠整个数组。

最佳答案

您可以使用 Lodash's 来实现flatMap .使用 flatMapDeep 可能会更短但恕我直言,这样就更清楚了。

const data = {
people: [
{
name: "Bob",
vehicles: [
{
model: "Mazda",
tires: [
{ pressure: 20 },
{ pressure: 22 },
{ pressure: 23 },
{ pressure: 21 },
]
},
{
model: "Harley Davidson",
tires: [
{ pressure: 20 },
{ pressure: 25 }
]
}
]
}
]
};


const pressures = _(data.people)
.flatMap(_.property('vehicles'))
.flatMap(_.property('tires'))
.map(_.property('pressure'))
.value();

console.log(pressures);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>

关于javascript - 使用路径从对象中提取数据 - 包括数组中的所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51198914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com