2021-09-20随笔 js怎样匹配两个数组部分字段内容,并进行操作

论坛有人问到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
           }
        ]
	}
];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值