我有2个对象数组。我只想使用第一个数组值过滤第二个数组,约束是
a)第一个数组的部分'section'和'/' - 第二个数组中不允许的值。
如何遍历其中2个数组并将所需对象过滤为数组。这是我的尝试:
var array1 = [
{
"part" : "section",
"id" : "3",
},
{
"part" : "page",
"id" : "1"
},
{
"part": "/",
"id" : "4"
},
{
"part": "/",
"id" : "5"
},
{
"part": "/",
"id" : "6"
}
];
var array2 = [
{
"name" : "dog",
"value" : "3"
},
{
"name" : "rabbit",
"value": "1", //it is allowed, since it's not fall under 'section' or '/'
},
{
"name" : "rose",
"value": "4"
},
{
"name" : "lilly",
"value": "5"
},
{
"name" : "egle",
"value": "6"
},
{
"name" : "horse",
"value": "7"
},
{
"name" : "cat",
"value": "8"
}
]
_.each(array1, function(item){
var fitered = _.filter(array2, function(fltItm){
return fltItm.value !== item.part('page').id || fltItm.value !== item.value;
})
})
但我没有得到正确的结果。我的结果应该是:
var array2 = [
{
"name" : "rabbit",
"value": "1",
},
{
"name" : "horse",
"value": "7"
},
{
"name" : "cat",
"value": "8"
}
]
如何实现这一目标?任何一个人建议我最好的方式?
答案 0 :(得分:1)
您可以将array1
映射到id
值,然后过滤,如下所示:
var map = {}, filtered;
_.each(array1, function (item) {
map[item.id] = item.part;
})
filtered = _.filter(array2, function (item) {
var part = map[item.value];
return part !== '/' && part !== 'section';
})