Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.09.2015, 16:33
Аспирант
Отправить личное сообщение для Валерий1996 Посмотреть профиль Найти все сообщения от Валерий1996
 
Регистрация: 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);
Ответить с цитированием
  #2 (permalink)  
Старый 10.09.2015, 17:00
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 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.
Ответить с цитированием
  #3 (permalink)  
Старый 10.09.2015, 17:10
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 10.09.2015, 17:10
Профессор
Отправить личное сообщение для caetus Посмотреть профиль Найти все сообщения от caetus
 
Регистрация: 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]))
Ответить с цитированием
  #5 (permalink)  
Старый 10.09.2015, 17:23
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

alert(Array.from(new Set([1,2,3,1,2,3])))
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #6 (permalink)  
Старый 10.09.2015, 17:32
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

nerv_, а потом будут вопросы - "а почему у меня не работает"
но спасибо, этого я тоже не знал=)
Ответить с цитированием
  #7 (permalink)  
Старый 13.09.2015, 19:42
Аспирант
Посмотреть профиль Найти все сообщения от newKingOfTheBlock
 
Регистрация: 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.
Ответить с цитированием
  #8 (permalink)  
Старый 13.09.2015, 19:55
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

newKingOfTheBlock, а теперь посмотри на читаемость твоего кода.

Цитата:
Не стоит тащить сюда лоховские конструкции, синтаксический мусор
Некоторые люди до сих пор живут без кондиционеров и.т.д Ибо зачем? Ведь я могу взять тетрадку и сидя на деревянном стуле - помахать себе на лицо, и станет комфортно.....
Ответить с цитированием
  #9 (permalink)  
Старый 13.09.2015, 19:58
Аспирант
Посмотреть профиль Найти все сообщения от newKingOfTheBlock
 
Регистрация: 13.09.2015
Сообщений: 32

Lemme,
Читаемость кода вот тут
myArray=new UnicArray([1,2,3,1,2,3,4])

Все остальное относится к реализации. Не думаю что нативная реализация Set выглядит проще этого.
Ответить с цитированием
  #10 (permalink)  
Старый 13.09.2015, 20:03
Аватар для Lemme
Профессор
Отправить личное сообщение для Lemme Посмотреть профиль Найти все сообщения от Lemme
 
Регистрация: 15.07.2015
Сообщений: 511

newKingOfTheBlock, ну, дело твое, не буду спорить, ибо мой скилл "не дорос" еще до споров.

А ТСу предложили уже достаточно вариантов, пусть выбирает, что душе угодно
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подскажите как удалить div alex2012 jQuery 5 13.10.2016 17:43
Задачка. Не выбирать уже выбранные значения массива. PashPP Общие вопросы Javascript 5 14.09.2012 14:42
Как удалить элемент таблицы seoneo Элементы интерфейса 2 29.08.2012 18:54
Как получить значения вышестоящих элементов дерева TreeStore ? Allan Stark ExtJS 1 31.07.2012 16:48
Как удалить из набора элементы у которых дисплей нан KamalovRadik jQuery 3 30.10.2011 16:11