首页 > 解决方案 > 找出两个数组之间的差异(Javascript 算法)+ 扩展运算符的时髦使用

问题描述

问题

比较两个数组并返回一个新数组,其中包含仅在两个给定数组之一中找到的任何项目,但不能同时在两个给定数组中找到。换句话说,返回两个数组的对称差。

注意 您可以按任何顺序返回数组及其元素。

专业开发人员回答

function diffArray(arr1, arr2) {
  return [...diff(arr1, arr2), ...diff(arr2, arr1)];

  function diff(a, b) {
    return a.filter(item => b.indexOf(item) === -1);
  }
}

我的问题

我不明白这段代码是如何运作的。特别是我从未见过像这样使用扩展运算符。请你解释一下这是如何工作的?

标签: javascriptalgorithmecmascript-6

解决方案


这只是将两个数组连接在一起的一种奇特方式。如果您不使用扩展运算符,这就是它的外观

function diffArray(arr1, arr2) {
  function diff(a, b) {
    return a.filter(item => b.indexOf(item) === -1);
  }

  var diff1 = diff(arr1, arr2)   // [0, 1]
  var diff2 = diff(arr2, arr1)   // [5, 6]
  return [].concat(diff1, diff2) // [0, 1, 5, 6]

}

var res = diffArray([0,1,2,3,4], [2,3,4,5,6])
console.log(res)


推荐阅读