2013-05-26 3 views
-4

Мне нужна функция JavaScript, которая способна подсчитывать количество уникальных элементов в массиве (т. Е. Игнорировать дубликаты). Например,Подсчет количества элементов в массиве, игнорирование дубликатов

var r = [car, car, bike, bike, truck] 

Результат должен быть 3 вместо 5.

ответ

1

Тест:

var r = ['car', 'car', 'bike', 'bike', 'truck']; 
var counts = [], count = 0, i = 0; 
for(i=0; i<r.length; i++) { 
    if(counts[r[i]] == undefined) { 
     counts[r[i]] = 1; 
     count++; 
    } 
} 
console.log(count); 

для данного массива, это печатает число уникальных элементов в массиве ,

0

Использование Array.filter()

var arr = ['car', 'car', 'bike', 'bike', 'truck'], 
    countUniques = arr.filter(function(elem, index, self) { 
    return index == self.indexOf(elem); 
}).length; 
alert(countUniques); //will show 3 

Если вы хотите, чтобы это было appliable всем массивам:

Array.prototype.countUniques = function() { 
    return this.filter(function(elem, index, self) { 
     return index == self.indexOf(elem); 
    }).length; 
}; 

Использование: arr.countUniques() // 3

1
Array.prototype.count_unique = function() { 
    var arr2 = []; 
    for (i = this.length; i--;) { 
     if (arr2.indexOf(this[i]) == -1) arr2.push(this[i]); 
    } 
    return arr2.length; 
} 

использовали

var r  = ['car', 'car', 'bike', 'bike', 'truck'], 
    unique = r.count_unique(); 

FIDDLE

Смежные вопросы