ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 配列内で一意の値を効率的に検索して返す方法

JavaScript 配列内で一意の値を効率的に検索して返す方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-28 10:24:10959ブラウズ

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 は、重複をフィルターで除外しようとしますが、値が 0 になると失敗します。

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 に数値を挿入すると、文字列に変換されます。ただし、ゼロの場合、この変換は空の文字列 '' になります。

したがって、2 番目のループが o を反復すると、空の文字列がキーとして検出され、それが配列に追加されます。これにより、重複値が誤って含まれることになります。

一意の値に対する正しい解決策

配列から一意の値を正確に取得するには、次の ES6 ソリューションを検討してください。 filter メソッド:

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。