JS怎么取出两个数组的不同值并合成一个新数组

例如

var array1 = [ 5,9,8,10,55];
var array2 = [ 5,50,10];
得到var arr3=[9,8,55,50]
阅读 5.8k
4 个回答

思路如下:

1,取两个数组的差集

var difference = arr1.filter(function(v){ return !(arr2.indexOf(v) > -1) }).concat(arr2.filter(function(v){ return !(arr1.indexOf(v) > -1)}));

2,先合并,再去重

var union = arr1.concat(arr2);

// 去重的方法实在是太多了~
function removeRepeatByFilter(array) {
  return array.filter(function (item, index) {
    // console.log(array.indexOf(item), index);
    return array.indexOf(item) === index;
  });
}

removeRepeatByFilter(union);

let arr3 = [...array1.filter(val => !array2.includes(val)), ...array2.filter(val => !array1.includes(val))];

//拿出array1中不同的
let a = array1.filter(e => {
    return !array2.includes(e)
})
//拿出array2中不同的
let b = array2.filter(e => {
    return !array1.includes(e)
})
//合并
let array3 = a.concat(b)
console.log(array3)
var array1 = [ 5,9,8,10,55];
var array2 = [ 5,50,10];
const newArray = (arr1, arr2) =>{
  return [...arr1.filter(x=> !arr2.includes(x)), ...arr2.filter(x=> !arr1.includes(x))]
} 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题