Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否使用下划线.js从数组中删除多个项?_Javascript_Underscore.js - Fatal编程技术网

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});
       });