6.4 KiB
6.4 KiB
title | localeTitle |
---|---|
Diff Two Arrays | 差分两个阵列 |
如果卡住,请记得使用**Read-Search-Ask
** 。尝试配对程序并编写自己的代码
问题说明:
检查两个数组并返回一个新数组,该数组仅包含不在任何一个原始数组中的项。
相关链接
- for Loop(Devdocs)
- Array.prototype.includes(Devdocs)
- Array.prototype.filter(Devdocs)
- Array.prototype.concat(Devdocs)
提示:1
合并列表以便于比较功能。
现在尝试解决问题
提示:2
使用filter来获取新数组,您需要创建一个回调函数。
现在尝试解决问题
提示:3
回调函数的最佳方法是检查新合并数组中的数字是否不在两个原始数组中并返回它。
现在尝试解决问题
扰流警报!
提前解决!
基本代码解决方案(势在必行的解决方案):
function diffArray(arr1, arr2) {
var newArr = [];
function onlyInFirst(first, second) {
// Looping through an array to find elements that don't exist in another array
for (var i=0;i<first.length;i++) {
if (second.indexOf(first[i]) === -1) {
// Pushing the elements unique to first to newArr
newArr.push(first[i]);
}
}
}
onlyInFirst(arr1, arr2);
onlyInFirst(arr2, arr1);
return newArr;
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
代码说明:
阅读代码中的注释。
相关链接
中间代码解决方案(声明解决方案):
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]);
代码说明:
在此解释解决方案并添加任何相关链接
相关链接
高级代码解决方案(声明解决方案):
function diffArray(arr1, arr2) {
return arr1
.filter(el => !arr2.includes(el))
.concat(
arr2.filter(el => !arr1.includes(el))
)
}
diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]);
代码说明:
在此解释解决方案并添加任何相关链接
高级代码解决方案替代(声明解决方案):
function diffArray(arr1, arr2) {
return [
...diff(arr1, arr2),
...diff(arr2, arr1)
]
function diff(a, b) {
return a.filter(item => b.indexOf(item) === -1);
}
}
相关链接
捐款说明:
- 请勿添加与任何现有解决方案类似的解决方案。如果您认为它**相似但更好** ,那么尝试合并(或替换)现有的类似解决方案。
- 添加解决方案的说明。
- 将解决方案分为以下类别之一 - 基本 , 中级和高级 。
- 如果您添加了任何**相关的主要内容,**请仅添加您的用户名。 ( 不要 删除任何现有的用户名 )