javascript - 找出两个数组之间的差异(Javascript 算法)+ 扩展运算符的时髦使用
问题描述
问题
比较两个数组并返回一个新数组,其中包含仅在两个给定数组之一中找到的任何项目,但不能同时在两个给定数组中找到。换句话说,返回两个数组的对称差。
注意 您可以按任何顺序返回数组及其元素。
专业开发人员回答
function diffArray(arr1, arr2) {
return [...diff(arr1, arr2), ...diff(arr2, arr1)];
function diff(a, b) {
return a.filter(item => b.indexOf(item) === -1);
}
}
我的问题
我不明白这段代码是如何运作的。特别是我从未见过像这样使用扩展运算符。请你解释一下这是如何工作的?
解决方案
这只是将两个数组连接在一起的一种奇特方式。如果您不使用扩展运算符,这就是它的外观
function diffArray(arr1, arr2) {
function diff(a, b) {
return a.filter(item => b.indexOf(item) === -1);
}
var diff1 = diff(arr1, arr2) // [0, 1]
var diff2 = diff(arr2, arr1) // [5, 6]
return [].concat(diff1, diff2) // [0, 1, 5, 6]
}
var res = diffArray([0,1,2,3,4], [2,3,4,5,6])
console.log(res)
推荐阅读
- django - 我可以在 Django Admin 中显示二级以上相关字段吗?
- laravel - Laravel Homestead - '没有指定输入文件'
- javascript - 当表单在 svelte js 中提交时,我的事件调度只运行一次,为什么?
- python - 从任意点 A[i,j] 将 2D MxM 矩阵缩短为 2D (M-1)x(M-1) 矩阵
- statistics - 如何从多项分布中采样?
- virtualization - Virt-manager 只为客人提供一个 ip。从以前的客人那里窃取 IP
- machine-learning - AlphaZero:在自我游戏过程中访问了哪些节点?
- javascript - 从 api 列表访问每个项目
- button - cakephp 在控制器中设置值不起作用
- javascript - 这个单 Node.JS 应用程序是否使用多核?