如何使用带有下划线的另一个数组中的元素过滤数组?
how to filter array with elements from another array with underscore?
我有一个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;
}
});
});
尝试使用 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>
可以用来检查 A 是否在 B 中的一些下划线方法是 find
、findIndex
和 where
。
哪里也可以:)
var A = _.reject(A, function(item) {
return _.where(B, {id: item.id}).length > 0
});
轻松使用开源项目jinqJs
var result = jinqJs().from(A).not().in(B, 'id').select();
我有一个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;
}
});
});
尝试使用 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>
可以用来检查 A 是否在 B 中的一些下划线方法是 find
、findIndex
和 where
。
哪里也可以:)
var A = _.reject(A, function(item) {
return _.where(B, {id: item.id}).length > 0
});
轻松使用开源项目jinqJs
var result = jinqJs().from(A).not().in(B, 'id').select();