Javascript 如何在react中查找两个嵌套数组之间不匹配的元素
下面有两个数组。 阵列1: 阵列2:Javascript 如何在react中查找两个嵌套数组之间不匹配的元素,javascript,reactjs,Javascript,Reactjs,下面有两个数组。 阵列1: 阵列2: { "0":{ "countries":{ "AIA":{ "count":2 } }, "checkId":"144165083478491106" }, "1":{ "countries":{ "BDI":{
{
"0":{
"countries":{
"AIA":{
"count":2
}
},
"checkId":"144165083478491106"
},
"1":{
"countries":{
"BDI":{
"count":1
},
"IRN":{
"count":1
},
"ATA":{
"count":5
}
},
"checkId":"16835659691517226105"
}
}
我想找出两个数组之间的不匹配和公共元素。目前,我正在执行两个for循环,以根据checkid查找两个数组之间的匹配元素,但无法从这两个数组中找到非公共元素。
一些代码片段
array1.forEach(each => {
array2.forEach(compareTask => {
var teastEach = Object.entries(compareTask.countries);
if (each.checkId === compareTask.checkId) {
firstCount = each.count
secondCount = compareTask.count
countDifference = secondCount - firstCount
我可以得到普通支票ID,但不能得到非普通支票ID。
预期产出:
{
"0":{
"countries":{
"ZAF":{
"count":2
}
},
"checkId":"144165083478491226"
},
"1":{
"countries":{
"AIA":{
"count":2
}
},
"checkId":"144165083478491106"
}
}
从注释来看,您可以使用
Map()
object1={“0”:{国家:{BDI:{count:1,},IRN:{count:1,},},checkId:“16835659691517226105”,},“1”:{国家:{ZAF:{count:2,},},checkId:“144165083478491226”,},};
object2={“0”:{国家:{AIA:{count:2,},},},checkId:“144165083478491106”},“1”:{国家:{BDI:{count:1,},IRN:{count:1,},ATA:{count:5,},},checkId:“168356691517226105”},};
map=新map();
arr=[Object.values(object1),Object.values(object2)].flat();
结果=[
…啊
.减少((r,o)=>{
const dupli=r.get(o.checkId);
dupli?r.delete(o.checkId):r.set(o.checkId,o);
返回r;
},新映射())
.values(),
];
控制台日志(结果)代码>看看这个:显示不匹配数组和匹配数组的所需输出。另外,您正在发布的是对象,您的代码正在处理数组。。。。那么,为什么要为此编写自己的代码呢?只要搜索npm,您就会找到几个可以进行对象扩散的库,这是一项非常重要的任务,任何您不必自己编写的代码都是您可以花费在您必须自己编写的代码上的时间。@Berto99这些都是对象。我已经使用JSON.stringify(obj)来打印数组的值
{
"0":{
"countries":{
"ZAF":{
"count":2
}
},
"checkId":"144165083478491226"
},
"1":{
"countries":{
"AIA":{
"count":2
}
},
"checkId":"144165083478491106"
}
}