Javascript 是否使用下划线.js从数组中删除多个项?
我有这个:Javascript 是否使用下划线.js从数组中删除多个项?,javascript,underscore.js,Javascript,Underscore.js,我有这个: var arrA = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}]; 我有另一个数组: var arrB = [{id:1,other:'c'},{id:3,other:'d'}]; 如何使用下划线.js从arrA中删除属性id与arrB相同的项 预期结果应该是: arrA = [{id:2, name:'b'}]; 谢谢 使用及 一行: arrA.filter((el) => (arrB.findIndex((ele
var arrA = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}];
我有另一个数组:
var arrB = [{id:1,other:'c'},{id:3,other:'d'}];
如何使用下划线.js从arrA中删除属性id与arrB相同的项
预期结果应该是:
arrA = [{id:2, name:'b'}];
谢谢
使用及
一行:
arrA.filter((el) => (arrB.findIndex((elem) => (elem.id == el.id)) == -1));
var arrA=[{
id:1,
姓名:“a”
}, {
id:2,
姓名:'b'
}, {
id:3,
姓名:“c”
}];
var arrB=[{
id:1,
其他:'c'
}, {
id:3,
其他:“d”
}];
var op=阵列过滤器(功能(el){
返回arrB.findIndex(函数(元素){
返回elem.id==el.id;
}) == -1;
});
控制台日志(op)代码>像这样
var arrA = [{id:1,name:'a'},{id:2,name:'b'},{id:3,name:'c'}];
var arrB = [{id:1,other:'c'},{id:3,other:'d'}];
var keys = _.keys(_.indexBy(arrB, "id"));
var result = _.filter(arrA, function(v) {
return !_.contains(keys, v.id.toString());
});
console.log(result)
希望这能有所帮助。在纯javascript中,如果在其他数组中找到id为的对象,则可以使用forEach()
循环和splice()
删除该对象
vararra=[{id:1,名称:'a'},{id:2,名称:'b'},{id:3,名称:'c'}];
var arrB=[{id:1,other:'c'},{id:3,other:'d'}];
VarB=arrB.map(e=>e.id);
arrA.forEach(函数(e,i){
如果(b.indexOf(e.id)!=-1)阵列拼接(i,1);
});
控制台日志(arrA)代码>听起来像是希望有所不同,但不幸的是,这对对象不起作用。相反,您可以尝试以下方法:
arrA = _.filter(arrA, function(obj){
return !_.findWhere(arrB, {id: obj.id});
});
您可以使用内置过滤器和find函数在不使用下划线的情况下执行此操作
vararra=[{id:1,名称:'a'},{id:2,名称:'b'},{id:3,名称:'c'}];
var arrB=[{id:1,other:'c'},{id:3,other:'d'}];
var res=arrB.减少((acc,b)=>{
返回acc.filter(({id})=>id!==b.id);
},阿拉);
//[{id:2,名称:'b'}]
控制台日志(res)代码>必须用下划线?javascript太乱了。或者你还有其他图书馆吗?lodash也可以。我只有javascript solutionok,让我们在这里的评论中发布一个plunkr或jsfiddle。不要张贴答案,否则可能会被否决,因为这并没有回答问题。谢谢你的贡献。这里是链接。检查浏览器控制台以查看结果
arrA = _.filter(arrA, function(obj){
return !_.findWhere(arrB, {id: obj.id});
});