数组的差异,结果为1或未定义

编程入门 行业动态 更新时间:2024-10-09 11:22:10

<a href=https://www.elefans.com/category/jswz/34/1771288.html style=数组的差异,结果为1或未定义"/>

数组的差异,结果为1或未定义

Array a = [1,2,3,4,5,5]

Array b = [1,2,3,5]

c = a - b

应该返回c = [4](5重复两次,但我不希望它在输出中)现在这是我的代码:

function arrayDiff(a, b) {
  var array = [];
  var diff = [];
  for (var i = 0; i<a.length; i++) {
    array[a[i]] = true;
  }

  for (var i = 0; i<b.length; i++) {
    if (array[b[i]]) {
      delete array[b[i]];
    }
    else {
      array[b[i]] = true;
    }

    for (var k in array) {
      return diff.push(k);
    }

  }

}
Test.describe("Sample tests", function() {
  Test.it("Should pass Sample tests", function() {
    Test.assertDeepEquals(arrayDiff([], [4,5]), [], "a was [], b was [4,5]");
    Test.assertDeepEquals(arrayDiff([3,4], [3]), [4], "a was [3,4], b was [3]");
    Test.assertDeepEquals(arrayDiff([1,8,2], []), [1,8,2], "a was [1,8,2], b was []");
  });
}); 

但是它返回奇怪的东西。您能解释一下为什么它返回1以及如何解决吗?这是console.log输出:


a was [], b was [4,5] - Expected: [], instead got: 1
a was [3,4], b was [3] - Expected: [4], instead got: 1
a was [1,8,2], b was [] - Expected: [1, 8, 2], instead got: undefined


Unhandled rejection TestError: a was [], b was [4,5] - Expected: [], instead got: 1

您能帮我解决吗?

回答如下:

您的代码看起来不错。为了简单起见,可能需要进行一些修改。

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

更多推荐

数组的差异,结果为1或未定义

本文发布于:2024-05-13 09:53:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759398.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   或未   差异   定义

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!