【问题标题】:Find the Difference Between Two Arrays (Javascript Algorithm) + Funky Use of the Spread Operator找出两个数组之间的差异(Javascript 算法)+ 扩展运算符的时髦使用
【发布时间】:2020-04-27 15:58:45
【问题描述】:

问题

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

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

专业开发者解答

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

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

我的问题

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

【问题讨论】:

  • 它只是将两个数组连接在一起
  • 使用扩展语法但不使用includesSet 的专业开发人员? .oO

标签: javascript algorithm ecmascript-6


【解决方案1】:

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

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)

【讨论】:

  • diff1.concat(diff2)
【解决方案2】:

用于数组的spread operator 将数组中的元素out 放入包含它们的数据结构中。所以如果A = [1,2,3]B = [4,5,6] 然后[...A, ...B] === [1,2,3,4,5,6]。如果没有展开运算符,它们将是 [[1,2,3], [4,5,6]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    相关资源
    最近更新 更多