首頁 > web前端 > js教程 > 如何有效率地尋找並傳回 JavaScript 陣列中的唯一值?

如何有效率地尋找並傳回 JavaScript 陣列中的唯一值?

Mary-Kate Olsen
發布: 2024-12-28 10:24:10
原創
967 人瀏覽過

How to Efficiently Find and Return Unique Values in a JavaScript Array?

在 JavaScript 陣列中尋找唯一值

在 JavaScript 中處理陣列時,通常需要刪除重複值以確保唯一性。這是 JavaScript 陣列遇到的常見問題:

var numbers = [1, 2, 3, 4, 5, 1, 2];
numbers.getUnique(); // [1, 2, 3, 4, 5] (incorrectly includes 1 and 2)
登入後複製

提供的原型方法 Array.prototype.getUnique 嘗試過濾掉重複項,但在遇到零值時失敗。

To了解問題後,讓我們檢查一下程式碼:

Array.prototype.getUnique = function() {
  var o = {}, a = [], i, e;
  for (i = 0; e = this[i]; i++) {o[e] = 1};
  for (e in o) {a.push (e)};
  return a;
};
登入後複製

問題出在用來追蹤唯一值的物件 o 上。當數字插入 o 時,它會轉換為字串。但是,對於零,此轉換會產生空字串 ''。

因此,當第二個循環迭代 o 時,它會遇到空字串作為鍵並將其添加到 a 數組中。這會導致錯誤地包含重複值。

唯一值的正確解

要準確地從陣列中取得唯一值,請考慮使用下列ES6 解過濾方法:

function onlyUnique(value, index, array) {
  return array.indexOf(value) === index;
}

// usage example:
var numbers = [1, 2, 3, 4, 5, 1, 2];
var unique = numbers.filter(onlyUnique);

console.log(unique); // [1, 2, 3, 4, 5]
登入後複製

此函數將陣列中每個值的索引與目前索引進行比較。如果索引匹配,則表示該值是唯一的並且包含在過濾後的陣列中。透過這種方法,所有重複值都被有效刪除。

以上是如何有效率地尋找並傳回 JavaScript 陣列中的唯一值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板