gpt4 book ai didi

javascript - lodash:使用 pickBy 过滤对象中的对象

转载 作者:行者123 更新时间:2023-11-30 11:18:35 26 4
gpt4 key购买 nike

我正在尝试使用 "lodash": "^4.17.10" 来过滤一个对象。

请参阅下面我的最小可行示例:

const obj = {
"2": {
"title": "GeForce GTX 1070 SC GAMING ACX 3.0 Black Edition",
"category": [{
"term_id": 34,
"name": "Graphic Card",
"slug": "graphic-card",
"term_group": 0,
}],
"currency": "$",
"price": "547.85",
"watt": "0",
},
"3": {
"title": "GeForce White Edition",
"category": [{
"term_id": 32,
"name": "other-card",
"slug": "other-card",
"term_group": 0,
}],
"currency": "$",
"price": "600.85",
"watt": "0",
}
}

let allGpuParts = _.pickBy(obj, (value, key) => {
return _.startsWith(key.category, "graphic-card")
})

console.log("allGpuParts")
console.log(allGpuParts)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>

目前没有返回任何结果。我只想取回对象 "2":,它有 slug "slug": "graphic-card"

关于如何使用 lodash 进行过滤有什么建议吗?

感谢您的回复!

最佳答案

  • 类别 是一个对象数组,因此您需要以某种方式对其进行迭代,例如通过使用 Array.prototype.some查找是否有满足条件的项目
  • 您需要检查 slug 本身,而不是测试字符串与对象类别

我保留了一个startsWith 测试,尽管您当前的示例也适用于完全匹配

const graphicCategory = cat => cat.slug.startsWith('graphic-card'); // true or false test

_.pickBy(
obj, // your object
value => value.category.some(graphicCategory) // pick if some category has graphic-card
); // {2: { ... }}

关于javascript - lodash:使用 pickBy 过滤对象中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50630165/

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