数组并集
resolveAfter2Seconds: function(data,code) {
return new Promise(function(resolve, reject) {
$.getJSON(`./json`, function (res) {
var data2 = res.navigations
var tempKeys = [];
for(var item of data){
if(tempKeys.indexOf(item['code']) == -1){
tempKeys.push(item['code']);
}
}
for(var item of data2){
let sign = true;
for(var key of tempKeys){
if(key == item['code']){
sign = false;
}
}
if(sign) data.push(item);
}
console.log('after',data);
resolve(data)
});
});
},
同步请求
// ajax 请求
success: async function(datas){
//=====================================================================================
console.log('before',data);
var result = await functions.resolveAfter2Seconds(data,code);
//================================================================================
},
替代前数组
比较两个数组,后者替代前者重复元素
function diff_arr_instead_before(before,after,code){
// 1. 把前者的提取键
var tempKeys = [];
for(var item of before){
if(tempKeys.indexOf(item[code]) == -1){
tempKeys.push(item[code]);
}
}
var res = [] // 结果
// 把后者的键取出来
var afterTempKeys = [];
// 取到交集 后者那一部分
for(var item of after){
let sign = false;
let compareKey = ''
// 遍历前者的键
for(var key of tempKeys){
// 取后者的数据
if(key == item[code]){
sign = true;
compareKey = key;
}
}
if(sign) {
res.push(item);
afterTempKeys.push(compareKey)
console.log('=====新的========',item)
}
}
// 取前者的补集
for(var i = 0; i< before.length;i++) {
let sign = false;
for(var key of afterTempKeys){
if(key == before[i][code]){
sign = true;
}
}
if(sign) {
console.log('======旧的=======',before[i][code])
delete before[i]
}
}
var len = before.length;
for(var i = 0; i<len ;i++) {
if(before[i] === undefined){
before.splice(before[i],1)
}
}
return res.concat(before)
}