js 应用题(一)

通过一个id把两个数组结合在一起

	var keyvalue = 'str123456';
	var perArr = [
	    {name:'sharon',age:12,sex:'女'},
	    {name:'kris',age:12,sex:'女'},
	];
	var docArr = [
	    {Id:'str123456',LocationName:'北京',Type:'页'},
	    {Id:'spp521348',LocationName:'上海',Type:'页'},
	    {Id:'add789456',LocationName:'天津',Type:'秒'},
	    {Id:'123456dga',LocationName:'云南',Type:'页'}
	];
	// 通过keyvalue的值与docArr的id相对应,把perArr添加到docArr中
	

方法一:重建一个数组bArr。这种方法会打乱原来的顺序

	let item = docArr.find((e)=>{return e.Id === keyvalue});
	let fItem = docArr.filter((e)=>{return e.Id !== keyvalue});
	let i = 0;
	if(perArr.length > 0){
	    let len = fItem.length + perArr.length;
	    let bArr = Array.from({length:len},(v,k)=>{
	        if(k < fItem.length){
	            return fItem[k];
	        }else{
	            if(i<perArr.length){
	                i++;
	                let obj = Object.assign({},item);
	                let newObj = $.extend(obj,perArr[i-1]);
	                return newObj;
	            }
	        }
	    })
	    console.log("arr",bArr);
	}

结果如图:
在这里插入图片描述
方法二:

	let myResult = [];
    docArr.forEach(function(v,i,darr){
        if(v.Id === keyvalue){
            let prevArr = docArr.slice(0,i);
            let nextArr = docArr.slice(i + 1);
            perArr.forEach(function(m){
                let obj = Object.assign({}, v);
                let newObj = $.extend(obj, m);
                prevArr.push(obj);
            })
            myResult = prevArr.concat(nextArr);
            return;
        }
    })
    console.log('myResult',myResult);

结果如图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值