arr1,arr2两个数组,相应位置一一对比

var arr1 = [1,2,4,5]
var arr2 = [1,3,5]
//期望两个数组通过比较变为
arr1 =[1,2,'',4,5]
arr2 =[1,'',3,'',5]
阅读 3.6k
2 个回答

不知道有没有理解你的需求

const _ = require('lodash')
let arr1 = [1,2,4,5]
let arr2 = [1,3,5]
const diff1to2 = _.difference(arr1, arr2) // [2, 4]
const diff2to1 = _.difference(arr2, arr1) // [3]

diff1to2.map(item => {
  // 将''塞到arr1中对应index的位置
  arr2.splice(arr1.indexOf(item), 0, '')
})
diff2to1.map(item => {
  // 将''塞到arr2中对应index的位置
  arr1.splice(arr2.indexOf(item), 0, '')
})

console.log(arr1, arr2)
// 根据规则合并并排序两个数组
var tmpArr1= Array.from(new Set([...arr1, ...arr2])).sort();
// 遍历,没有的位置置空
tmpArr1.forEach(function(e,i) {
   if (arr1.indexOf(e) < 0) {
        tmpArr1[i] = ''
   }
})
console.log(tmpArr1)
推荐问题