【发布时间】:2016-05-30 17:27:28
【问题描述】:
我编写了代码来返回一个仅包含两个单独数组的唯一元素的新数组。示例:[1,2,3] 和 [1,2] 将返回 3。我有工作代码,但是我想解释一下为什么在使用 '!' 时它会起作用在我的退货声明之前:
function diffArray(arr1, arr2) {
return arr1.concat(arr2).filter(function(val){
return !(arr1.indexOf(val) >= 0 && arr2.indexOf(val) >= 0)
});
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
但事实并非如此:
function diffArray(arr1, arr2) {
return arr1.concat(arr2).filter(function(val){
return arr1.indexOf(val) < 0 && arr2.indexOf(val) < 0
});
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
我的印象是'!'只会反转表达式,因此排除它并使用 '=' 应该返回相同的值。
【问题讨论】:
-
想想
&&运算符会发生什么。你认申请!在您的表达式中更改比较,但保留 AND 原样。
标签: javascript comparison-operators