繁体   English   中英

有人可以解释我试图比较 2 arrays 的代码有什么问题吗?

[英]Can someone explain what is wrong with my code that is trying to compare 2 arrays?

我正在尝试比较 2 个 arrays 并返回一个新数组,其中包含仅在两个给定 arrays 之一中找到的任何项目。 所以这就是我得到的:

 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]));

错误是您只检查一个数组中的值。 您必须检查 arr1 中的值是否在 arr2 中,以及 arr2 的值是否在 arr1 中。

注意:我在 arrays 中添加了额外的值进行测试

 function diffArray(arr1, arr2) { var newArr = []; arr1.forEach(element => { if(arr2.indexOf(element) === -1){ newArr.push(element) } }); arr2.forEach(element => { if(arr1.indexOf(element) === -1){ newArr.push(element) } }); return newArr } console.log(diffArray([1, 2, 3,6, 5,7], [1, 2, 3, 4,10,23,11,123, 5])); console.log(diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM