【发布时间】:2021-11-04 11:50:46
【问题描述】:
我一直无法弄清楚如何让它发挥作用。我有两个嵌套对象数组 arr1 和 arr2。
let arr1 =[{
id: 1,
rideS: [
{
id: 12,
station: {
id: 23,
street: "ABC"
}
}
]
},
{
id: 2,
rideS: [
{
id: 13,
station: {
id: 24,
street: "MMM"
}
}
]
}
]
let arr2 = [
{
id: 1,
so: {
id: 33,
sos: [{
id: 44,
station: {
id: 55,
street: "ABC"
}
},
{
id: 74,
station: {
id: 11,
street: "DDD"
}
}
]
}
},
{
id: 2,
so: {
id: 34,
sos: [{
id: 45,
station: {
id: 56,
street: "RRR"
}
},
{
id: 51,
station: {
id: 66,
street: "ZZZ"
}
}
]
}
},
{
id: 3,
so: {
id: 35,
sos: [{
id: 46,
station: {
id: 57,
street: "MMM"
}
},
{
id: 75,
station: {
id: 66,
street: "VVV"
}
}
]
}
}
]
我需要使用“sos”中第一个对象数组的“street”属性值将 arr2 与 arr1 进行比较,结果我需要返回不匹配的对象
例如,如果我将这两个数组作为我期望的结果进行比较:
let result = [
{
id: 2,
so: {
id: 34,
sos: [{
id: 45,
station: {
id: 56,
street: "RRR"
}
},
{
id: 51,
station: {
id: 66,
street: "ZZZ"
}
}
]
}
}
]
这就是我尝试做的事情
let result = arr2.filter(o1 => o1.so.sos.some(o2 => !arr1.some(a1=> a1.rideS.some(a2 => o2.station.street === a2.station.street))))
结果我得到了所有对象,但我需要这样的问题:
let result = arr2.filter(o1 => o1.so.sos[0].some(o2 => !arr1.some(a1=> a1.rideS.some(a2 => o2.station.street === a2.station.street))))
【问题讨论】:
-
您是说即使在 Arr1 中预设的街道名称之一与 Arr2 匹配,而不管它应该被删除的任何其他属性如何?
-
是的,先生,如果 arr1 中的任何街道名称与 arr2 中的街道属性名称相同(但仅与数组“sos”的第一个对象比较),则不会在结果中返回
标签: javascript arrays reactjs ecmascript-6 filter