当与角度为8的另一个数组对象进行比较时,我如何单独过滤未匹配的数组元素



我有一个两个数组的响应,我想比较这两个响应,并必须将不匹配的数组元素过滤到一个新的数组对象中。

比较两个响应和筛选器的条件是: codenumber与响应二不完全匹配时,我们必须进行筛选,然后我们必须将这样的数组元素筛选到一个新的数组对象中,我需要它作为输出

响应二示例中的数组元素也存在于数组一示例的响应中,我不想要它,我需要过滤与数组一的响应不匹配的数组元素。

我们从响应2数组中筛选出的最终输出如下所示,与响应1数组对象不匹配:

{
"unmatchedArrayRes": [
{
"code": "08",
"number": "2323232323",
"id": "432",
"value": "value432"
}
]
}

阵列一的响应

{
"MainData": [
{
"DataResponseOne": [
{
"viewData": {
"number": "11111111111111",
"code": "01"
},
"name": "viewDataOne"
},
{
"viewData": {
"number": "22222222222222",
"code": "01"
},
"name": "viewDataTwo"
},
{
"viewData": {
"number": "3333333333333",
"code": "02"
},
"name": "viewDataThree"
}
]
},
{
"DataResponseTwo": [
{
"viewData": {
"number": "5555555555555",
"code": "9090"
},
"name": "viewDataFour"
},
{
"viewData": {
"number": "6666666666666",
"code": "01"
},
"name": "viewDataFive"
},
{
"viewData": {
"number": "8888888888888",
"code": "01"
},
"name": "viewDataSix"
}
]
}
]
}

响应二示例:

{
"compareRes": [
{
"code": "01",
"number": "11111111111111",
"id": "123",
"value": "value123"
},
{
"code": "9090",
"number": "5555555555555",
"id": "345",
"value": "value567"
},
{
"code": "08",
"number": "2323232323",
"id": "432",
"value": "value432"
}
],
"metaData": "343434343434"
}

首先,从响应一创建所有视图项的组合列表。

const combinedList = [];
res1["MainData"].forEach(data => {
// console.log(data);
for( let key in data) {
// console.log(key);
data[key].forEach(innerData => {
console.log(innerData)
combinedList.push(innerData["viewData"]);
})
}
});

在上面的方法中,它可以处理多个viewData响应,如DataResponseOne、DataResponse Two等

然后过滤第二个响应项目如下:

const unfilteredListItems = res2["compareRes"].filter(data => {
return !combinedList.some(listItem => {
return listItem.code === data.code && listItem.number === data.number;
});
});
console.log(unfilteredListItems);

工作Stacklitz链接:https://stackblitz.com/edit/ngx-translate-example-aq1eik?file=src%2Fapp%2Fapp.component.html

最新更新