通过一个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);
结果如图: