gpt4 book ai didi

javascript - 为什么下划线的差异只能以一种方式起作用

转载 作者:搜寻专家 更新时间:2023-11-01 05:23:14 25 4
gpt4 key购买 nike

如果我要说“这些数组有什么区别?['a'] 和 ['a', 'b']?”你会说“b”对吗?

我想知道下划线默认没有双向差异的原因是什么?您将如何结合其他方法来实现这一目标?

var a = ['js-email'],
b = ['js-email', 'form-group'],
c = _.difference(a, b), // result: []
d = _.difference(b, a); // result: ["form-group"]

http://jsfiddle.net/GH59u/1/

为了澄清,我希望差异始终等于 ['form-group'] 而不管数组的传递顺序如何。

最佳答案

你可以在两个方向上将两个项目之间的差异组合起来。

function absDifference(first, second) {
return _.union(_.difference(first, second), _.difference(second, first));
}

console.assert(absDifference(["a", "b"], ["a", "c"]).toString() == "b,c");
var a = ["js-email"], b = ["js-email", "form-group"];
console.assert(absDifference(a, b).toString() == "form-group");

如果您希望它在整个项目中作为 _ 库本身的一部分可用,那么您可以使用 _.mixin像这样

_.mixin({
absDifference: function(first, second) {
return _.union(_.difference(first, second), _.difference(second, first));
}
});

然后

console.assert(_.absDifference(["a", "b"], ["a", "c"]).toString() == "b,c");
var a = ["js-email"],
b = ["js-email", "form-group"];
console.assert(_.absDifference(a, b).toString() == "form-group");

关于javascript - 为什么下划线的差异只能以一种方式起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22762466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com