论坛有人问到js怎样匹配两个数组部分字段内容,并进行操作,随手写一个,给用得到的人
/*
编写人:逍遥的心freeheart1977 2021-9-20
delmatch 从两个表中匹配,删除第二个表中的匹配项
taba 第一张表
cola 第一张表的匹配项。格式如 **.**.**
tabb 第二张表
colb 第二张表的匹配项。格式如 **.**.**
本例的调用为:
delmatch(tab2,'numbers',tab3,'pigBatchEntry.0.pigBatchId')
*/
function delmatch(taba,cola,tabb,colb){
var cola_s=cola.split('.'),colb_s=colb.split('.'),delarray=[]
taba.forEach(function(a) {
var ai=a;
for(var i=0;i<cola_s.length;i++)ai=ai[cola_s[i]]
for(var j=tabb.length-1;j>=0;j--){
var bi=tabb[j]
for(var k=0;k<colb_s.length;k++)bi=bi[colb_s[k]]
if(ai===bi){
delarray.push(j)
}
}
});
var doarray=Array.from(new Set(delarray)).sort()
for(var i=doarray.length-1;i>=0;i--)tabb.splice(doarray[i],1)
}
数据如下:
var tab2=
[
{
name: 111,
numbers: 222
},
{
name: 222,
numbers: 666
},
{
name: 333,
numbers: 888
}
]
var tab3=
[
{
"fid": 111,
"pigBatchEntry": [
{
"fid": 111,
"parentId": 111,
"pigBatchId": 333
}
]
},
{
"fid": 111,
"pigBatchEntry": [
{
"fid": 111,
"parentId": 111,
"pigBatchId": 666
}
]
},
{
"fid": 111,
"pigBatchEntry": [
{
"fid": 111,
"parentId": 111,
"pigBatchId": 777
}
]
}
];