為什麼數組的相等性檢查失敗
在JavaScript 中,數組之間的相等性檢查(==) 返回false,即使數組看起來包含相同的元素。這種行為與值相等的直觀期望相矛盾。
理解陣列的本質
JavaScript 陣列不是原始資料類型,而是物件。使用 == 比較兩個陣列時,該運算子檢查兩個陣列是否完全相同,而不是檢查它們的內容是否相等。
如何比較陣列內容
要確定兩個陣列是否具有相同的內容,您需要明確比較每個對應的元素。這是一個簡單的函數來執行此操作:
function arraysEqual(arr1, arr2) { if (arr1.length != arr2.length) { return false; } for (let i = 0; i < arr1.length; i++) { if (arr1[i] != arr2[i]) { return false; } } return true; }
JSON.stringify() 謬誤
一些建議使用JSON.stringify() 將兩個數組轉換為JSON 字串然後比較字串。雖然這在某些情況下可能有效,但這並不是一個可靠的解決方案。 JSON.stringify() 在結果字串中維護物件屬性順序,該順序可能會根據實作細節而有所不同。這種不一致可能會導致相等性檢查中出現漏報。
最佳實踐
為了可靠地比較數組內容,建議編寫一個迭代所有元素的自定義函數並明確檢查是否相等。這種方法確保了比較數組的準確性和穩健性。
以上是為什麼 JavaScript 中的「==」不能用來比較陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!