Как удалить повторяющиеся значения с массива?
Есть массив, с которого нужно удалить повторяющиеся значения , но оставить одно уникальное. Например : [privet, privet, kakdela ] должно получится [privet, kakdela].
А у меня выходит так [kakdela ] то есть удаляет все повторы не оставляя ни одного . Подскажите как исправить код ? var array = [1, 2, 1, 10, 5, 3, 4, 40, 50], i = array.length, result = []; array.sort(function (a, b) { return a - b; }); for (var i = 0; i < array.length; i++) { array[i] != array[i - 1] && array[i + 1] != array[i] && result.push(array[i]) } alert(result); |
function fn (arg) { var result = []; var obj = {} for(var i = 0; i < arg.length; i++) { obj[arg[i]] = arg[i]; } for(var i in obj) { result.push(obj[i]) } return result; } var arg = fn([22,22,1,2,2,1,1,3,4,5,6,10000, 10000, 1000000,1000000,1000000,1000000,1000000, 'privet', 'privet', 'str', 'str']); console.log(arg) |
Array.prototype.unique = function() { return this.filter(function(value, index, _this) { return _this.indexOf(value) === index; }); } alert([1,2,3,3,3,4,5,6,7,7,8,3,4,5,6,1,4,5,8,9,3,2, 'q', 'q', 'aaaa'].unique()); |
или так
//массив должен быть отсортирован function f(arg) { var result = []; for(var i = 0; i < arg.length; i++) { if(arg[i] == result[result.length-1]) continue; result.push(arg[i]) } return result; } console.log(f([1,2,2,3,3,5,6])) |
alert(Array.from(new Set([1,2,3,1,2,3]))) |
nerv_, а потом будут вопросы - "а почему у меня не работает" :victory:
но спасибо, этого я тоже не знал=) |
Цитата:
copy=function(array){return array.map(function(x){return x})} UnicArray=function(arr){this.array=[]; if(arr) this.add(arr)} UnicArray.prototype = { add: function(array){ var array=copy(array) var tmp while(array.length) if(this.array.indexOf(tmp=array.pop()) === -1) this.array.push(tmp) }, show: function(){ alert(this.array) } } myArray=new UnicArray([1,2,3,1,2,3,4]) myArray.show() Разница в том, что реализуя кастомную структуру, мы имеем огромный выигрыш в гибкости. Не стоит тащить сюда лоховские конструкции, синтаксический мусор, там где надо и не надо, выдавая баги за фичи. Вся эта неуемная тяга к хипстерскому говну идет от банального непонимания языка, и его возможностей. Если бы это было частью текущего стандарта, это еще имело бы какой-никакой смысл. Но это даже не стабильная версия. Ко времени принятия стандарта может все 1000 раз изменится, ее могут вообще убрать. Нахрен вы постите сюда этот мусор? Что вы пытаетесь этим сказать? Что Вы Илита? Хотите удивить кого-то? |
newKingOfTheBlock, а теперь посмотри на читаемость твоего кода.
Цитата:
|
Lemme,
Читаемость кода вот тут myArray=new UnicArray([1,2,3,1,2,3,4]) Все остальное относится к реализации. Не думаю что нативная реализация Set выглядит проще этого. |
newKingOfTheBlock, ну, дело твое, не буду спорить, ибо мой скилл "не дорос" еще до споров.
А ТСу предложили уже достаточно вариантов, пусть выбирает, что душе угодно ;) |
Часовой пояс GMT +3, время: 17:35. |