在我的angular 4应用程序中,我有以下数组:
let sampleArray1 = [
{
"name":"Raman",
"prdList":[
{
"p_code":"20",
"crtList":[
{
"c_code":"087"
}
]
}
]
},
{
"name":"Laxman",
"prdList":[
{
"p_code":"10"
}
]
},
{
"name":"raj",
"prdList":[
{
"p_code":"202"
}
]
},
{
"name":"raghav",
"prdList":[
{
"p_code":"30",
"crtList":[
{
"c_code":"97"
}
]
}
]
}
]
在此数组中,缺少某些对象crtList
。我需要过滤掉所有这些对象,并且需要拥有必须且应该具有crtList
的数组。
所以我的结果sampleArray2应该有以下结果:
[
{
"name":"Raman",
"prdList":[
{
"p_code":"20",
"crtList":[
{
"c_code":"087"
}
]
}
]
},
{
"name":"raghav",
"prdList":[
{
"p_code":"30",
"crtList":[
{
"c_code":"97"
}
]
}
]
} ]
如何使用lodash实现这一目标?
答案 0 :(得分:0)
实际上,要获取sampleArray2,您不需要lodash。一个简单的Array.prototype.filter
就足够了:
let sampleArray1 = [
{
"name":"Raman",
"prdList":[
{
"p_code":"20",
"crtList":[
{
"c_code":"087"
}
]
}
]
},
{
"name":"Laxman",
"prdList":[
{
"p_code":"10"
}
]
},
{
"name":"raj",
"prdList":[
{
"p_code":"202"
}
]
},
{
"name":"raghav",
"prdList":[
{
"p_code":"30",
"crtList":[
{
"c_code":"97"
}
]
}
]
}
];
let result = sampleArray1.filter(function(x) {
return hasCrtList(x.prdList);
});
function hasCrtList(prdList) {
for (var i in prdList) {
if (prdList[i].crtList) {
return true;
}
}
return false;
}
console.log(result);
答案 1 :(得分:0)
我知道为时已晚,但是我认为这对其他开发人员很有用。您可以使用Lodash仅用一行代码即可轻松实现这一目标。
_.differenceWith(fullArrayOfObjects, subsetArrayOfObjects, _.isEqual)
此函数将返回不在subsetArrayOfObjects
中的缺少的对象数组。希望对您有所帮助。