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/