我有一个jsonarray A,但我想删除满足某个条件的元素。这个条件是具有某个id的元素,它们包含在另一个名为B的数组中。它们都包含相同的id属性。
假设数组如下所示:
A =[{"id":1},{"id":2},{"id":3}]
B =[{"id":1},{"id":2}]
因此我尝试创建的函数将导致:
result=[{"id":3}]
我试过这个但没有工作:
result= _.each(A, function(gl) {
return _.each(B, function(tg) {
if (tg.id != gl.id) {
return gl;
}
});
});
答案 0 :(得分:2)
尝试使用reject
过滤掉您不想要的值:
var A =[{"id":1},{"id":2},{"id":3}];
var B =[{"id":1},{"id":2}];
var result = _.reject(A, function(item) {
return _.find(B, {id: item.id});
});
alert(JSON.stringify(result)); // [{"id":3}]

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.5.0/lodash.js"></script>
&#13;
您可以用来检查A是否在B中的一些下划线方法是find
,findIndex
和where
。
答案 1 :(得分:1)
哪里也可以:)
var A = _.reject(A, function(item) {
return _.where(B, {id: item.id}).length > 0
});
答案 2 :(得分:0)