удаляем одинаковые значения с массива
Вот моя вторая функция которую я здесь выношу на обозрение!! С прошлой вы мне очень помогли, чтобы её усовершенствовать =)
Может быть будут идеи по этой функции: Убирает одинаковые значения в массиве (я это применял для шахматного сайта, когда собирал номера битых полей!) 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, время: 08:45. |