Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Удаление дубликатов и пустых элементов в массиве (https://javascript.ru/forum/dom-window/74367-udalenie-dublikatov-i-pustykh-ehlementov-v-massive.html)

s24344 04.07.2018 10:20

Удаление дубликатов и пустых элементов в массиве
 
Ребята, подскажите пожалуйста как удалить из массива дубликаты и пустые элементы:

(15) [{…}, {…}, {…}, {…}, {…}, empty × 5, {…}, {…}, {…}, {…}, {…}]

0: {src: "images/1.jpg", thumb: "images/1.jpg"}
1: {src: "images/2.jpg", thumb: "images/2.jpg"}
2: {src: "images/3.jpg", thumb: "images/3.jpg"}
3: {src: "images/4.jpg", thumb: "images/4.jpg"}
4: {src: "images/5.jpg", thumb: "images/5.jpg"}

10:{src: "images/1.jpg", thumb: "images/1.jpg"}
11:{src: "images/2.jpg", thumb: "images/2.jpg"}
12:{src: "images/3.jpg", thumb: "images/3.jpg"}
13:{src: "images/4.jpg", thumb: "images/4.jpg"}
14:{src: "images/5.jpg", thumb: "images/5.jpg"}
length:15

Nexus 04.07.2018 10:25

Попробуйте так:
const index = {};
list = list.filter(item => {
    return (!item.src || !!index[item.src]) ? false : index[item.src] = true;
});

laimas 04.07.2018 10:31

s24344,
откуда это на клиент поступает?

s24344 04.07.2018 10:42

Изначально было определенное количество dom элементов. В цикле через условие в итоге осталось десять элементов (<div><img src="" />)</div>). Итерация было 15, так как элементов изначально length было 15. На каждой итерации, я произвел следующее действие:
arr[i] = {
	'src': images[i].querySelector('img').getAttribute('src'),
	'thumb': images[i].querySelector('img').getAttribute('src')
}

В итоге получился массив, который я описал выше. Собственно мне нужно было убрать из него дубликаты и пустые элементы.

s24344 04.07.2018 10:47

Спасибо большое.

laimas 04.07.2018 11:31

Цитата:

Сообщение от s24344
Изначально было определенное количество dom элементов.

Это что статическая страница с жестким кодом "от ручек"? Ну в этом случае тем более не должно быть дубликатов. А если все таки сервер это отдает клиенту, то почему он отдает дубликаты, с которыми должен бороться клиент?


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