javascript - 有人可以解释我试图比较 2 个数组的代码有什么问题吗?
问题描述
我正在尝试比较 2 个数组并返回一个新数组,其中包含仅在两个给定数组之一中找到的任何项目。所以这就是我得到的:
function diffArray(arr1, arr2) {
var newArr = [];
var max;
var test;
(arr1.length > arr2.length) ? (max = arr1, test = arr2) : (max = arr2, test = arr1);
for (let i = 0; i < test.length; i++) {
if (max.indexOf(test[i]) === -1) {
newArr.push(test[i])
}
}
return newArr;
}
console.log(diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]));
但是,当我运行它时, newArr 返回一个空数组。有人可以指出错误吗?
解决方案
function diffArray(arr1, arr2) {
var newArr = [];
let checkArr = [];
for (const val of arr1) {
checkArr[val] = 0
}
for (const val of arr2) {
checkArr[val] = checkArr[val] !== undefined ? checkArr[val] + 1 : 0
}
for (const val of arr1) {
if (checkArr[val] === 0) {
newArr.push(val)
}
}
for (const val of arr2) {
if (checkArr[val] === 0) {
newArr.push(val)
}
}
return newArr;
}
console.log(diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]));
推荐阅读
- core-bluetooth - RxBluetoothKit - 实现读写协议并自动断开连接
- .net-core - 使用代理的实体框架核心延迟加载不起作用(SQLite)
- python - C++ 中的 Numpy `.view` 函数
- node.js - 当他在客户端(node.js)中进行身份验证时,如何访问服务器中用户的谷歌驱动器?
- c++ - 如果 enable_if 确定 T 是容器,则启用结构?
- sql-server - 如何在 Delphi 10.2 中连接到 SQL Server 数据库之前测试 ADOConnection ConnectionString
- angular - 如何获取 Firebase 实时数据库中添加的最后一项?
- python - 如何在 python 中跨文件使用 tkinter 小部件?
- java - 无法加载 Tomcat 服务器配置 服务器项目已关闭
- python - Python数据预处理:将同一目录下的10000张图片加载到一个变量中?