最近做的一道题,题目是求两个数组的差异,并返回新数组。
我看到其中一个非常简练的答案是这样的:
function diffArray(arr1, arr2) {
return arr1
.concat(arr2)
.filter(
item => !arr1.includes(item) || !arr2.includes(item)
)
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
其中的item => !arr1.includes(item) || !arr2.includes(item)
我完全看不懂,没见过这是什么语法,求大神指点,谢谢!
PHPz2017-04-11 11:56:17
涉及3个点:
箭头函数
短路求值
includes
item => !arr1.includes(item) || !arr2.includes(item)
可以做如下翻译:
function (item) {
if (!arr1.includes(item)) {
return true;
}
if (!arr2.includes(item)) {
return true;
}
return false;
}
怪我咯2017-04-11 11:56:17
这是ES6
的语法,翻译成ES5
就是
filter(function(item) {
return !arr1.includes(item) || !arr2.includes(item)
})
其中includes
也是ES6
新加的相当于
!(arr1.indexOf(item)!== -1) || !(arr2.indexOf(item)!== -1)
所以相当于下面的,去学学ES6的语法吧
filter(function(item) {
return !(arr1.indexOf(item)!== -1) || !(arr2.includes(item)!== -1)
})