js 获取两个数组的相同元素和不同元素(简易方法)

1、获取两个数组的不同元素

function getDiff(arr1, arr2) {
  return arr1.concat(arr2).filter((item, index, arr) => 
    arr.indexOf(item) === arr.lastIndexOf(item)
  )
}
// eg:
var a1 = [1, 2, 3, 4, 5], 
    a2 = [2, 3, 4, 5, 6];
getDiff(a1, a2);  // [1, 6]

concat 用来合并两个数组,也可以写成[...arr1, ...arr2]; filter用来过滤数组,参数arr表示合并后的数组;indexOf表示元素第一次出现的位置,lastIndexOf表示元素最后一次出现的位置。

2、获取两个数组的相同元素

function getSame(arr1, arr2) {
  return [...new Set(arr1)].filter(item => 
    arr2.includes(item)
  )
}
// eg:
var a1 = [1, 2, 3, 3, 4, 5], 
    a2 = [2, 3, 4, 5, 6];
getSame(a1, a2); // [2, 3, 4, 5]

Set方法是es6新增的方法,用来去重;以上方法通过过滤数组a1,遍历每一项,找到a2和a1的交集。


感谢浏览,如果大家有更简易的方法,欢迎评论区留言讨论~

你可能感兴趣的:(js 获取两个数组的相同元素和不同元素(简易方法))