Javascript 使用另一个json对象从json对象中删除特定内容
我想做的很难解释 这是总体思路:Javascript 使用另一个json对象从json对象中删除特定内容,javascript,json,Javascript,Json,我想做的很难解释 这是总体思路: var object1=[{“数字”:1111,“测试”:0,“低”:2131},{“数字”:1234,“测试”:0,“低”:2684},{“数字”:4214,“测试”:0,“低”:6345}]; var object2=[{“number”:1234}]; 这里有一些代码 输出:var object1=[{“number”:1111,“test”:0,“low”:2131},{“number”:4214,“test”:0,“low”:6345}]这是如何使用
var object1=[{“数字”:1111,“测试”:0,“低”:2131},{“数字”:1234,“测试”:0,“低”:2684},{“数字”:4214,“测试”:0,“低”:6345}];
var object2=[{“number”:1234}];
这里有一些代码
输出:var object1=[{“number”:1111,“test”:0,“low”:2131},{“number”:4214,“test”:0,“low”:6345}]代码>这是如何使用lodash的差分功能实现的:
let difference = _.differenceWith(object1, object2, (obj1, obj2) => {
return obj1.number === obj2.number
})
这就是如何使用lodash的differenceWith
功能实现的:
let difference = _.differenceWith(object1, object2, (obj1, obj2) => {
return obj1.number === obj2.number
})
您需要一个函数来比较两个对象,然后可以筛选出找到的对象:
var object1=[{“数字”:1111,“测试”:0,“低”:2131},{“数字”:1234,“测试”:0,“低”:2684},{“数字”:4214,“测试”:0,“低”:6345}];
var object2=[{“number”:1234,“test”:0,“low”:2684}];
常量objectsEqual=(o1,o2)=>
Object.keys(o1).length==Object.keys(o2).length
&&Object.keys(o1).every(p=>o1[p]==o2[p]);
var res=object1.filter(o1=>!object2.some(o2=>objectsEqual(o1,o2));
控制台日志(res)代码>您需要一个函数来比较两个对象,然后可以筛选出找到的对象:
var object1=[{“数字”:1111,“测试”:0,“低”:2131},{“数字”:1234,“测试”:0,“低”:2684},{“数字”:4214,“测试”:0,“低”:6345}];
var object2=[{“number”:1234,“test”:0,“low”:2684}];
常量objectsEqual=(o1,o2)=>
Object.keys(o1).length==Object.keys(o2).length
&&Object.keys(o1).every(p=>o1[p]==o2[p]);
var res=object1.filter(o1=>!object2.some(o2=>objectsEqual(o1,o2));
控制台日志(res)代码>您可以使用Array.filter和Array.findIndex函数的组合来实现它
var object1=[{“数字”:1111,“测试”:0,“低”:2131},{“数字”:1234,“测试”:0,“低”:2684},{“数字”:4214,“测试”:0,“低”:6345}];
var object2=[{“number”:1234,“test”:0,“low”:2684}];
var result=object1.filter(函数(obj1){
返回object2.findIndex(函数(obj2){
返回obj2.number==obj1.number;
}) ==-1;
});
console.log(result)
您可以使用Array.filter和Array.findIndex函数的组合来实现它
var object1=[{“数字”:1111,“测试”:0,“低”:2131},{“数字”:1234,“测试”:0,“低”:2684},{“数字”:4214,“测试”:0,“低”:6345}];
var object2=[{“number”:1234,“test”:0,“low”:2684}];
var result=object1.filter(函数(obj1){
返回object2.findIndex(函数(obj2){
返回obj2.number==obj1.number;
}) ==-1;
});
console.log(result)
您可以减少object1并使用find-too查看这些数字是否包含在object1中
var object1=[{“appid”:1111,“test”:0,“low”:2131},{“appid”:1234,“test”:0,“low”:2684},{“appid”:4214,“test”:0,“low”:6345}];
var object2=[{“appid”:1234}];
var object3=object1.reduce((ac,v,i)=>{
返回object2.find(函数(obj){
返回obj.appid==v.appid;
})?ac:[…ac,v];
}, [])
console.log(object3)
您可以减少object1并使用find-too查看这些数字是否包含在object1中
var object1=[{“appid”:1111,“test”:0,“low”:2131},{“appid”:1234,“test”:0,“low”:2684},{“appid”:4214,“test”:0,“low”:6345}];
var object2=[{“appid”:1234}];
var object3=object1.reduce((ac,v,i)=>{
返回object2.find(函数(obj){
返回obj.appid==v.appid;
})?ac:[…ac,v];
}, [])
console.log(object3)
这里有另一个选项,可以从object1
数组中删除与object2
中的对象中的一个或多个属性匹配的所有对象
var object1=[{“数字”:1111,“测试”:0,“低”:2131},{“数字”:1234,“测试”:0,“低”:2684},{“数字”:4214,“测试”:0,“低”:6345},
object2=[{“number”:1234}];
console.log(
object1.filter(obj1=>{
return!object2.some(obj2=>{
for(让attrName在obj1中){
if(obj1[attrName]==obj2[attrName])返回true;
}
返回false;
});
})
);
//如果您不想查看,可以将其简化为以下内容
//所有属性,但仅预定义属性
console.log(
object1.filter(obj1=>!object2.some(obj2=>obj1.number==obj2.number))
);代码>这里是另一个选项,用于从object1
数组中删除与object2
中的对象中的一个或多个属性匹配的所有对象
var object1=[{“数字”:1111,“测试”:0,“低”:2131},{“数字”:1234,“测试”:0,“低”:2684},{“数字”:4214,“测试”:0,“低”:6345},
object2=[{“number”:1234}];
console.log(
object1.filter(obj1=>{
return!object2.some(obj2=>{
for(让attrName在obj1中){
if(obj1[attrName]==obj2[attrName])返回true;
}
返回false;
});
})
);
//如果您不想查看,可以将其简化为以下内容
//所有属性,但仅预定义属性
console.log(
object1.filter(obj1=>!object2.some(obj2=>obj1.number==obj2.number))
);代码>此帮助?如果匹配为部分匹配,会发生什么情况?比如说[{“number”:1234,“test”:1,“low”:4862}]
,其中number匹配,但其他属性不匹配。我编辑了我的问题。其他属性不在第二个对象中。第二个对象中只有number属性。这有帮助吗?如果比赛是局部的会发生什么?比如说[{“number”:1234,“test”:1,“low”:4862}]
,其中number匹配,但其他属性不匹配。我编辑了我的问题。其他属性不在第二个对象中。第二个对象中只有number属性。JSON.stringify
在对象属性顺序不同时不起作用:JSON.stringify({“number”:1234,“test”:0,“low”:2684})!==stringify({“number”:1234,“low”:2684,“test”:0})
@3limin4t0r需要一个最小的示例,所以我们不知道对象来自哪里。可能是来自外部资源,序列化为JSON——那么很可能是顺序改变了,因此该解决方案无法工作。我