いくつかの値を持つ配列がありますが、配列に同じ値を入れる必要はありません
例:
var myarray=new Array();
myarray[0]="Apple",
myarray[1]="Grapes",
myarray[2]="Apple",
配列にブドウとリンゴのみを含める必要があります。
いくつかの値を持つ配列がありますが、配列に同じ値を入れる必要はありません
例:
var myarray=new Array();
myarray[0]="Apple",
myarray[1]="Grapes",
myarray[2]="Apple",
配列にブドウとリンゴのみを含める必要があります。
この関数は、配列から重複した値を削除します (最後の値を保持します)。
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;
}
}
}
ここで私はいくつかの方法を見つけました。ソース: 配列内の重複要素の削除
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;
}
unique = myArray.filter(function(elem, pos) {
return myArray.indexOf(elem) == pos;
})
unique
一意の値のみを持ちます。
filter
注: 上記は、ECMAScript5 の時点で新しく、従来のブラウザー (IE8 を含む) には存在しませんが、最新のすべてのブラウザーには存在する に依存しています。レガシー ブラウザをサポートする必要がある場合は、ES5 shim を使用します ( filter
shim 対応)。indexOf
また、IE7 などの非常に古いブラウザには存在しない可能性があることにも注意してください。