簡體   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