javascript - 使用 lodash 在嵌套数组中查找值
问题描述
我正在尝试在嵌套数组中检索值,但我的函数正在返回所有内容。我想只支持数组中的“carTime”值。
我的数组返回了什么。
[
{
"carId": "13122",
"carInstances": [
{
"carInstanceId": "472",
"carTime": "2020-09-23T21:45:00.000+0000",
"state": "COMPLETE",
}
],
"isPaused": false,
},
{
"carId": "1312",
"carInstances": [
{
"carInstanceId": "47209",
"carTime": "2020-09-23T21:45:00.000+0000",
"state": "COMPLETE",
}
],
"isPaused": false,
},
]
罗达什:
const result = [
{
"carId": "13122656",
"carInstances": [
{
"carInstanceId": "47209",
"carTime": "2020-09-23T21:45:00.000+0000",
"state": "COMPLETE",
}
],
"isPaused": false,
},
{
"carId": "1312",
"carInstances": [
{
"carInstanceId": "4720",
"carTime": "2020-09-23T21:45:00.000+0000",
"state": "COMPLETE",
}
],
"isPaused": false,
},
]
const findCategoryById = (sections) => {
const jobInstance = _.forEach(sections, (section) => {
return section.carInstances.carTime;
});
return jobInstance;
};
findCategoryById(result)
期望的输出:
2020-09-23T21:45:00.000+0000,
2020-09-23T21:45:00.000+0000
解决方案
你不需要 lodash 来解决这个问题。一个小的 JS 函数将使用 reduce 和 map。使用 lodash 你可以:
_(result).flatMap('carInstances').flatMap("carTime")).values()
const result = [
{
"carId": "13122656-169f-45fa-be47-26c9d23dcb7b",
"carInstances": [
{
"carInstanceId": "47209558-f9e1-4f81-a600-5da6ce238a6e",
"carTime": "2020-09-23T21:45:00.000+0000",
"state": "COMPLETE",
}
],
"isPaused": false,
},
{
"carId": "13122656-169f-45fa-be47-26c9d23dcb7b",
"carInstances": [
{
"carInstanceId": "47209558-f9e1-4f81-a600-5da6ce238a6e",
"carTime": "2020-09-23T21:45:00.000+0000",
"state": "COMPLETE",
}
],
"isPaused": false,
},
];
const listCarTime = (res) => {
return res.reduce((acc, car) => {
acc.push(...car.carInstances.map((instance) => instance.carTime));
return acc;
}, []);
}
console.log("lodash", _(result).flatMap('carInstances').flatMap("carTime").values())
console.log("vanilla", listCarTime(result));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
推荐阅读
- python - 有没有办法可以检测图像方向并将图像旋转到正确的角度?
- apache - 根据环境变量切换 Apache proxypass conf
- laravel - Laravel:获取项目列表和 SUM
- ios - 如何区分通过蓝牙配对的设备和使用 ExternalAccessory 通过电缆“配对”的设备?
- java - 应用程序停止时无法停止长时间运行的查询
- c# - 如何添加引用以及如何使用单元测试来测试它是否是回文
- r - 避免将整个图形标题文本放入 rmarkdown 中的图形列表
- javascript - JavaScript 对象不会到达 PHP 控制器
- java - 使 Google Maps Android 标记处理多行
- android - 如何在 Android 中使用 MediaRecoder 录制高质量的音频?