JavaScriptの配列のすべての一意の値を取得します(削除重複)

この翻訳:JavaScriptのArrayに(削除重複を)すべてのA UNIQUE値を取得します。

私がいることを私は数字の配列を持っていることを確認ユニークであるようにする必要があります。 私は数字のユニークな配列を特定する必要があります。 私は上の下のコードスニペットを見つけたインターネットと配列は、それがゼロになるまで、それは素晴らしい作品。 私は、インターネット上の次のコードを発見し、それは配列で正しく動作する前にゼロが含まれています。 私が見つかりました。この他のスクリプトここ壁紙ほとんどON SOまさにITのように見えますが、それはしないの失敗ということ。 私はSOで見つかった別のスクリプト、ルックスほとんど同じですが、失敗することはありません。

だから、私は学ぶ助けのために 、私は決定することができ、誰かの助けどこプロトタイプのスクリプトは?間違って起こっている ので、私が学ぶのを助けるために、誰かが私はプロトタイプのスクリプト問題は何を判断するのに役立つことができますか?

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;
}

重複した質問からより多くの答え: 繰り返しの質問からより多くの回答:

同様の質問: 同様の質問:


#1階

参考:https://stackoom.com/question/8E0X/すべての固有値取得JavaScriptの配列-削除重複


ハウス#2

また、あなたによって使用することができUnderscore.js 使用することもできUnderscore.jsを

 console.log(_.uniq([1, 2, 1, 3, 1, 4])); 
 <script src="http://underscorejs.org/underscore-min.js"></script> 

これ返します。 それが返されます。

[1, 2, 3, 4]

ハウス#3

私が見つかりました。素敵な方法以来いるのjQueryを使用して 、それ以来、私はjQueryのを使用しての良い方法を見つけました

arr = $.grep(arr, function(v, k){
    return $.inArray(v ,arr) === k;
});

注:このコードはから引っ張ったポール・アイリッシュのアヒルパンチPOST - I公司は信用に与えることを忘れてしまった:Pの 注:このコードは、からであるポール・アイリッシュ鴨パンチの記事抽出 -私はあなたに感謝の気持ちを与えることを忘れてしまった:P


#4階

このプロトタイプgetUnique:私は、アレイAのように持ってきたIFので、全く正しくない["1",1,2,3,4,1,"foo"]ITウィル・リターンによる["1","2","3","4"]と、"1"ISとのString 1; IS A整数 このプロトタイプはgetUnique:私が持っている場合は、配列の配列が似ているので、完全に正しくありません["1",1,2,3,4,1,"foo"]、それは返す["1","2","3","4"]"1"、文字列を、1整数であり、 それらは異なっている。 それらは同じではありません。

ここでは正解です: これは適切なソリューションです。

Array.prototype.unique = function(a){
    return function(){ return this.filter(a) }
}(function(a,b,c){ return c.indexOf(a,b+1) < 0 });

使用: 使用します:

var foo;
foo = ["1",1,2,3,4,1,"foo"];
foo.unique();

上記のウィルプロデュースによる["1",2,3,4,1,"foo"] 上記生成されます["1",2,3,4,1,"foo"]


ハウス#5

Shamasisバッタチャリヤ「ブログS:(O(2N)時間計算) からShamasisバッタチャリヤブログ(O(2N)時間複雑):

Array.prototype.unique = function() {
    var o = {}, i, l = this.length, r = [];
    for(i=0; i<l;i+=1) o[this[i]] = this[i];
    for(i in o) r.push(o[i]);
    return r;
};

ポール・アイリッシュ「Sブログ改善にはJQuery: .unique() からポール・アイルランドのブログです:jQueryのの.unique()改善:

(function($){

    var _old = $.unique;

    $.unique = function(arr){

        // do the default behavior only if we got an array of elements
        if (!!arr[0].nodeType){
            return _old.apply(this,arguments);
        } else {
            // reduce the array to contain no dupes via grep/inArray
            return $.grep(arr,function(v,k){
                return $.inArray(v,arr) === k;
            });
        }
    };
})(jQuery);

// in use..
var arr = ['first',7,true,2,7,true,'last','last'];
$.unique(arr); // ["first", 7, true, 2, "last"]

var arr = [1,2,3,4,5,4,3,2,1];
$.unique(arr); // [1, 2, 3, 4, 5]

ハウス#6

JavaScript 1.6 / ECMAScriptの5あなたはネイティブで使用することができますfilter:UNIQUE値を持つ配列GETするために、次のように中AN配列の方法、 使用するJavaScript 1.6 / ECMAScriptの5、あなたはの方法で配列を使用することができ、マシンfilter固有の値を取得する方法を配列:

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

// usage example:
var a = ['a', 1, 'a', 2, '1'];
var unique = a.filter( onlyUnique ); // returns ['a', 1, 2, '1']

でネイティブメソッド、filterそれが唯一のコールバック関数で通過ことを考えると、これらのエントリループアレーでと休暇を通じてウィルによるonlyUnique ネイティブメソッドのfilter配列を反復処理は、コールバック関数に与えられたものだけを保持onlyUnique

onlyUnique与えられた値である場合チェックは、最初に発生した。 onlyUnique与えられた値が最初に出現したかどうかを確認します。 そうでない場合、それが重複しなければなりませんし、コピーされません。 そうでない場合、それが繰り返されなければならないとコピーされません。

このソリューションは、のような余分なライブラリなしで動作のjQueryやprototype.jsの。 このソリューションは、仕事に(例えばjQueryのか、prototype.jsのような)任意の追加のライブラリを必要としません。

これは、混合値型との配列のために働く 。すぎる また、混合配列の値型にも適用可能です。

ネイティブメソッドでサポートしていない古いブラウザ(<IE9)については、filterindexOfあなたがのためにMDNドキュメントの中に検索回避策CAN フィルタのindexOf 古いブラウザ(<IE9)の場合は、ネイティブのメソッドをサポートしていませんfilterし、indexOfあなたがMDNを見つけることができます文書の修正フィルターのindexOf

あなたは価値のIF最後の発生でおきたい、シンプルに置き換えるindexOfことでlastIndexOf あなたは、単に、最後のオカレンスの値を保持したい場合indexOfに交換しますlastIndexOf

ES6とこれに短縮することができ : に簡素化することができます使用ES6:

// usage example:
var myArray = ['a', 1, 'a', 2, '1'];
var unique = myArray.filter((v, i, a) => a.indexOf(v) === i); 

// unique is ['a', 1, 2, '1']

おかげカミロ・マーティンのコメントでヒントの。 ありがとうカミロ・マーティンプロンプトのコメントを。

ネイティブオブジェクトAはES6のために持っているSetストアUNIQUE値に。 ES6のためのネイティブオブジェクトはSet一意の値を格納するために使用されます。 あなたは一意の値を持つ配列を取得するには 、今、これが行うことができます: ユニークな値を持つ配列を取得するには、あなたは今、次の操作を行うことができます。

var myArray = ['a', 1, 'a', 2, '1'];

let unique = [...new Set(myArray)]; 

// unique is ['a', 1, 2, '1']

コンストラクタのSet配列のように、AN反復処理可能オブジェクトを受け取り、オペレータが拡散...SET戻るINTO ANアレイの変換。 Setコンストラクタオブジェクト(例えばアレイ)の反復を使用してオペレータを配布...セット変換バックアレイに。 おかげルーカスリーゼコメントでヒントの。 ありがとうルーカス・リーゼはプロンプトコメントしています。

オリジナルの記事は0公表 ウォンの賞賛136 ビュー830 000 +

おすすめ

転載: blog.csdn.net/xfxf996/article/details/105245147