Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Работа со списками, удалить лишнее (https://javascript.ru/forum/jquery/32102-rabota-so-spiskami-udalit-lishnee.html)

svs_js 03.10.2012 15:10

Работа со списками, удалить лишнее
 
Всем привет,

существует такой вопрос:

У меня есть список объектов

data = [
   {id: '1000', name: 'name1', url:''}, 
   {id: '1001', name: 'name2', url:''}, 
   {id: '1002', name: 'name3', url:''}, 
   {id: '1000', name: 'name4', url:''}
]



и мне необходимо удалить лишние объекты, у каких одинаковый АйДи...
Как лучше всего это сделать ? Большое спасибо.

ksa 03.10.2012 15:42

Цитата:

Сообщение от svs_js
Как лучше всего это сделать ?

Как вариант...
1. Пробежаться по массиву
2. Добавлять елемент в новый массив, если такой ИД не был записан в "промежуточный" объект и запоминать ИД в "промежуточный" объект

antonM 03.10.2012 23:24

Не идеально конечно, но работает.
var newData = [];
for (var i = 0; i < data.length; i++) {
  var item = data[i].id;
  var add = true;
  for (var n = 0; n < newData.length; n++) {
    if (data[i].id == newData[n].id) {
      add = false;
    }
  }
  if (add) { 
    newData.push(data[i]);
  }
}


Рабочий пример тут. Результат смотрите в консоли.

ksa 05.10.2012 10:38

antonM, гонять по массивам всякий раз не очень хороший подход...

Более удобно пробежаться один раз, "все выяснить"... А потом просто этим "пользоваться".
Я использовал такие абстрактные слова, т.к. реализация сильно зависит от языка реализации.
В JS для этого можно использовать объекты...

antonM 05.10.2012 12:20

Ну я не претендовал на best of the best :) в начале поста написано.
Вы бы привели свой вариант.

ksa 05.10.2012 15:38

Цитата:

Сообщение от antonM
Вы бы привели свой вариант.

Смысл приводить букварский подход? Такое как раз и отводят на "самостоятельное" освоение...

Само описание алгоритма я дал выше...

antonM 05.10.2012 20:58

ksa, тогда тыкните мне ссылку на букварский подход. Буду образовываться.

ksa 08.10.2012 09:24

antonM, что именно тебе показать? :)
Как добавлять свойства в объект?
http://javascript.ru/tutorial/object...vlenie-svoystv
Как проверять есть такое свойство в объекте или нет?
http://javascript.ru/typeof


Часовой пояс GMT +3, время: 00:34.