-4

いくつかの値を持つ配列がありますが、配列に同じ値を入れる必要はありません

例:

var myarray=new Array();
myarray[0]="Apple",
myarray[1]="Grapes",
myarray[2]="Apple",

配列にブドウとリンゴのみを含める必要があります。

4

3 に答える 3

2

この関数は、配列から重複した値を削除します (最後の値を保持します)。

function removeDups(arr) {
    var temp = {}, val;
    for (var i = arr.length - 1; i >= 0; i--) {
        val = arr[i];
        if (temp[val] === true) {
            // already have one of these so remove this one
            arr.splice(i, 1);
        } else {
             temp[val] = true;
        }
    }
}

最後のものではなく最初のものを保持したい場合は、次のバージョンを使用できます。

function removeDups(arr) {
    var temp = {}, val;
    for (var i = 0; i < arr.length; i++) {
        val = arr[i];
        if (temp[val] === true) {
            // already have one of these so remove this one
            arr.splice(i, 1);
            // correct our for loop index to account for removing the current item
            --i;
        } else {
             temp[val] = true;
        }
    }
}
于 2013-01-28T06:37:26.120 に答える
2

ここで私はいくつかの方法を見つけました。ソース: 配列内の重複要素の削除

function eliminateDuplicates(arr) {
 var i,
 len=arr.length,
 out=[],
 obj={};

 for (i=0;i<len;i++) {
   obj[arr[i]]=0;
 }

 for (i in obj) {
   out.push(i);
 }

 return out;
}
于 2013-01-28T06:35:08.303 に答える
0
unique = myArray.filter(function(elem, pos) {
    return myArray.indexOf(elem) == pos;
})

unique一意の値のみを持ちます。

filter注: 上記は、ECMAScript5 の時点で新しく、従来のブラウザー (IE8 を含む) には存在しませんが、最新のすべてのブラウザーには存在する に依存しています。レガシー ブラウザをサポートする必要がある場合は、ES5 shim を使用します ( filtershim 対応)。indexOfまた、IE7 などの非常に古いブラウザには存在しない可能性があることにも注意してください。

于 2013-01-28T06:31:33.203 に答える