function sym(args) { var arr = Array.prototype.slice.call(arguments); return arr.reduce((arr1, arr2) => { return arr1.concat(arr2).filter((val) => { return arr1.indexOf(val) === -1 || arr2.indexOf(val) === -1; }).filter((val, index, arr) => { return arr.indexOf(val) === index; }); }); }
题目:
创建一个函数,接受两个或多个数组,返回所给数组的 对等差分(symmetric difference) (△
or ⊕
)数组.
分析:
Array.reduce() Symmetric Difference
Array.prototype.slice()
概述:方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。且原始数组不会被修改。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/slice
arguments
概述:arguments 是一个对应于传递给函数的参数的类数组对象。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments
Array.prototype.filter()
概述:方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
"=>"采用的是新的标准 ES6标准。这个标准会渐渐流行,有警告无伤大雅的。
因为这是我目前见到思路最清晰,代码最简洁的写法了,所以摘录下来慢慢消化。
本文参考博客:
澄酱
https://www.cnblogs.com/laoho/p/7787658.html