удаляем одинаковые значения с массива
Вот моя вторая функция которую я здесь выношу на обозрение!! С прошлой вы мне очень помогли, чтобы её усовершенствовать =)
Может быть будут идеи по этой функции: Убирает одинаковые значения в массиве (я это применял для шахматного сайта, когда собирал номера битых полей!)
function array_unique(array){
for(f=0; f<array.length; f++){
for(u=array.length-1; u>f; u--){
if(array[u] == array[f]) array.splice(u, 1);
}
}
}
array55 = [3,7,1,8,3,8,5,4,4,2,1,3,6,6];
alert(array55);
array_unique(array55);
alert(array55);
|
|
array55 = [3,7,1,8,3,8,5,4,4,2,1,3,6,6];
uniqueArray = array55.filter(function(elem, pos) {
return array55.indexOf(elem) == pos;
});
так проще |
Цитата:
|
Цитата:
|
Цитата:
http://kangax.github.io/es5-compat-t...ototype.filter |
А! Всего-то, а я уж думал что там что-то серьезное. Но спасибо за объяснение.
|
Цитата:
|
Цитата:
array55 = [3,7,1,8,3,8,5,4,4,2,1,3,6,6];
uniqueArray = array55.filter(function(elem, pos) {
return array55.indexOf(elem) == pos;
});
alert(uniqueArray);
|
Цитата:
|
Мне кажется что по интерациям, быстрее мой способ!
|
Цитата:
самый быстрый вариант, это складывать уникальные значения в другой массив, тем самым не нужно будет пробегать по огромному массиву проверяя в нем же, его же значения. |
Цитата:
|
Цитата:
Если как значения - то перебор хэша медленней, если как ключи - то мы говори не только о текстовых значениях. |
Цитата:
var obj = {};
var newArr = [];
// цикл по массиву (arr)
// value
if ( !obj[ value ] ) {
obj[ value ] = 1;
newArr.push( value );
}
|
nerv_,
а теперь дочитай пост.) P.S. Сам в своё время попался на эту "гениальную" идею.) |
nerv_,
Aetae же упомянул что мы говорим не только о текстовых/примитивных значениях. Объекты так же могут быть в массиве, которые ты уже не сможешь поместить в объект в качестве ключа. var arr = [document, document, window, document.body]; |
Цитата:
Цитата:
alert([
document.toString(),
document.toString(),
window.toString(),
document.body.toString()
]);
Ну а в целом: примитивы в объект, объекты в массив. Быстрее будет. Или нет? ) |
Цитата:
var a = {};
var b = {};
var arr = [a, a, b, b];
|
Цитата:
Обычно, мы знаем с чем имеем дело. И, если надо из массива примитивов отобрать уникальные, вариант с объектом предпочтительней. С другой стороны, с точки зрения абстрактной функции array_unique, ей должно быть все равно. |
function unique(array){
var set = new Set;
var res = [];
for(var i = 1; i<array.length; i++)
if(!set.has(array[i])){
res.push(array[i]);
set.add(array[i]);
}
return res;
}
Современный способ. |
SV0L0CH, только фф.
|
Aetae, в хроме тоже можно включить.
|
| Часовой пояс GMT +3, время: 15:00. |