Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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 使用另一个json对象从json对象中删除特定内容_Javascript_Json - Fatal编程技术网

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——那么很可能是顺序改变了,因此该解决方案无法工作。我