10.09.2015, 16:33
|
Аспирант
|
|
Регистрация: 11.06.2015
Сообщений: 74
|
|
Как удалить повторяющиеся значения с массива?
Есть массив, с которого нужно удалить повторяющиеся значения , но оставить одно уникальное. Например : [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);
|
|
10.09.2015, 17:00
|
Профессор
|
|
Регистрация: 23.09.2014
Сообщений: 197
|
|
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)
Последний раз редактировалось caetus, 10.09.2015 в 17:04.
|
|
10.09.2015, 17:10
|
|
Профессор
|
|
Регистрация: 15.07.2015
Сообщений: 511
|
|
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());
Последний раз редактировалось Lemme, 10.09.2015 в 17:20.
|
|
10.09.2015, 17:10
|
Профессор
|
|
Регистрация: 23.09.2014
Сообщений: 197
|
|
или так
//массив должен быть отсортирован
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]))
|
|
10.09.2015, 17:23
|
|
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
alert(Array.from(new Set([1,2,3,1,2,3])))
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|
10.09.2015, 17:32
|
|
Профессор
|
|
Регистрация: 15.07.2015
Сообщений: 511
|
|
nerv_, а потом будут вопросы - "а почему у меня не работает"
но спасибо, этого я тоже не знал=)
|
|
13.09.2015, 19:42
|
Аспирант
|
|
Регистрация: 13.09.2015
Сообщений: 32
|
|
Сообщение от nerv_
|
alert(Array.from(new Set([1,2,3,1,2,3])))
|
Не стоит забывать, что JS -- какой-никакой ООП язык. Подобные структуры реализуются тривиально, безо всякого говна
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, 13.09.2015 в 19:56.
|
|
13.09.2015, 19:55
|
|
Профессор
|
|
Регистрация: 15.07.2015
Сообщений: 511
|
|
newKingOfTheBlock, а теперь посмотри на читаемость твоего кода.
Цитата:
|
Не стоит тащить сюда лоховские конструкции, синтаксический мусор
|
Некоторые люди до сих пор живут без кондиционеров и.т.д Ибо зачем? Ведь я могу взять тетрадку и сидя на деревянном стуле - помахать себе на лицо, и станет комфортно.....
|
|
13.09.2015, 19:58
|
Аспирант
|
|
Регистрация: 13.09.2015
Сообщений: 32
|
|
Lemme,
Читаемость кода вот тут
myArray=new UnicArray([1,2,3,1,2,3,4])
Все остальное относится к реализации. Не думаю что нативная реализация Set выглядит проще этого.
|
|
13.09.2015, 20:03
|
|
Профессор
|
|
Регистрация: 15.07.2015
Сообщений: 511
|
|
newKingOfTheBlock, ну, дело твое, не буду спорить, ибо мой скилл "не дорос" еще до споров.
А ТСу предложили уже достаточно вариантов, пусть выбирает, что душе угодно
|
|
|
|