gpt4 book ai didi

javascript - 下划线.js : findWhere with nested property value

转载 作者:行者123 更新时间:2023-12-02 23:51:23 35 4
gpt4 key购买 nike

如何进行以下过滤:

[{
"id": 100,
"title": "Tlt1",
"tax": [{
"name": "Tax1",
"id": 15
}, {
"name": "Tax1",
"id": 17
}]
}, {
"id": 101,
"title": "Tlt2",
"tax": [{
"name": "Tax2",
"id": 16
}]
}, {
"id": 102,
"title": "Tlt3",
"tax": [{
"name": "Tax3",
"id": 17
}, {
"name": "Tax3",
"id": 18
}]
}]

仅获取 tax.id17 的内容,如下所示:

[
{
"id": 100,
"title": "Tlt1",
"tax": [
{
"name": "Tax1",
"id": 15
},
{
"name": "Tax1",
"id": 17
}
]
},
{
"id": 102,
"title": "Tlt3",
"tax": [
{
"name": "Tax3",
"id": 17
},
{
"name": "Tax3",
"id": 18
}
]
}
]

目前我使用下面的方法,但也许有更干净的方法来解决这个问题?

var arr = [];
_(data).each(function (v1, k1) {
_(v1.tax).each(function (v2, k2) {
if (v2.id == id) {
arr.push(v1);
}
});
});

此处演示:http://jsfiddle.net/7gcCz/2/

非常感谢任何建议。

最佳答案

您可以组合使用_.filter_.where

_.filter(data, function(obj) {
return _.where(obj.tax, {id: ID_TO_FIND}).length > 0;
})

查看演示:http://jsfiddle.net/hCVxp/

更新

<小时/>

感谢@GruffBunny。更有效的方法是使用 _.some 来避免循环遍历所有 tax 项目:

var arr = _.filter(data, function(obj) {
return _.some(obj.tax, {id: ID_TO_FIND});
});

查看演示:http://jsbin.com/putefarade/1/edit?html,js,console

关于javascript - 下划线.js : findWhere with nested property value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21600530/

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