javascript - 元素为数组时两个数组之间的区别

标签 javascript lodash

var a = [["Green","Medium"],["Green","Small"],["Medium","Red"],["Red","Small"]];

var b = [["Green","Medium"],["Green","Small"],["Medium","Red"]];

So my result will [["Red","Small"]]

并不是说 a.filter(x => !b.includes(x)) 不起作用,因为所有元素都是数组。 我试过类似的东西

    var diff = [];
    a.forEach((res, i) => {
      b.forEach((res2, j) => {
        if (i === j && !_.isEqual(res, res2)) {
          diff.push(res);
        }
      });
    });
console.log(diff);

当不同的元素是最后位置时这不起作用

最佳答案

在lodash中,你可以使用_.differenceWith()和供应_.isEqual()作为执行深度比较的比较器:

const c = _.differenceWith(a, b, _.isEqual);

完整片段:

const a = [["Green","Medium"],["Green","Small"],["Medium","Red"],["Red","Small"]];
const b = [["Green","Medium"],["Green","Small"],["Medium","Red"]];

const c = _.differenceWith(a, b, _.isEqual);

console.log(c);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

关于javascript - 元素为数组时两个数组之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53940161/

相关文章:

javascript - 你能模拟在事件运行之前按住的 shift 键吗

IE 的 Javascript 代码覆盖率工具

javascript - 将数组数组中的唯一值合并到数组中

javascript - 如何将多维数组转换为二维数组?

javascript - 使用 Lodash 将平面数组转换为 Id 和 Name 对象数组

javascript - Javascript 中的 "".constructor 与 2.constructor

javascript - 将数据解析为 JSON 格式的问题

javascript - 如何从两个数组中获取唯一的集合,通过键的值删除第二次出现的项目,而不是像 Lodash unique By 那样删除第一个项目?

javascript - 如何使用 lodash 将字段值下沉到嵌套的 JSON

javascript - 在 CasperJS 中获取具有特定(数据)属性的每个元素