javascript - 在 Javascript 中比较两个数组

标签 javascript arrays

我在 Javascript 中有两个数组,目前看起来像这样,但通过 HTTP 请求(节点)更新:

var x = [[292,"2349","902103","9"],[3289,"93829","092","920238"]]
var y = [[292,"2349","902103","9"],[322,"93829","092","920238"],[924,"9320","8932","4329"]]

我正在寻找比较这些数组的方法,这样,如果 y 中有一个不在 x 中的数组,它将被保存到一个新数组 - z。请注意,有时数组内部的数组顺序会发生变化,但我不希望这影响结果。

但是,如果 x 中有一个不在 y 中的数组,则不应将其保存到 z

我读了JavaScript array difference并且已经能够复制它,但是如果 x 数组没有显示在 y 中,它将被打印到 z。我想知道是否可以不存储它,只存储 y 中的不同项目?

最佳答案

使用接受数组(随着 y 的每次迭代而改变)并返回对 some 中的每个元素(嵌套数组)进行操作的新函数的高阶函数.它返回 true如果数组包含相同的元素而不考虑顺序。

function matches(outer) {
  return function (el) {
    if (outer.length !== el.length) return false;
    return el.every(function (x) {
      return outer.indexOf(x) > -1;
    });
  }
}

遍历 y并返回不在 x 中的数组列表.

function finder(x, y) {
  return y.filter(function (el) {
    return !x.some(matches(el));
  });
}

finder(x, y);

DEMO

关于javascript - 在 Javascript 中比较两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36520223/

相关文章:

javascript - 为什么 map 未定义?

java - 删除整数中的重复数字

php - 如何加快处理多个大型数组的缓慢加载 PHP 页面?

php - 如何在谷歌地图标记上动态显示数据库值?

javascript - 多显示器/双显示器系统上的 window.open() - 窗口在哪里弹出?

javascript - HTML/Javascript 表单 如何将表单数据序列化为 JSON 并显示在类中?

javascript - 使用express js获取404渲染 View ejs

javascript - 如何通过 meteor 正确管理下划线混合?

ios - 从字典数组中删除

javascript - 按不同的键对对象数组进行排序