venkatesh (chennai) Ответов: 1

Как удалить дубликаты в arraylist в javascript..?


Нужно удалить дубликаты в arraylist в javascript...

<!DOCTYPE html>


Попробовать это



функция myFunction() {
массив var =
[
{"имя":"Боб", "возраст":17 лет},
{"имя":"Боб", "возраст":17 лет},
{"имя":"Карл", "возраст": 35 лет}
];

var t = [];
for (var x = 0; x &lt; array.length; x++) {
если (т.метод indexOf(массив[х].имя) == -1) Т.толчок(массив[х].название);
}


//Мои ожидаемые результаты
var t =
[
{"имя":"Боб", "возраст":17 лет},
{"имя":"Карл", "возраст": 35 лет}
];
}




Что я уже пробовал:

Я попробовал следующий код...
пожалуйста, помогите..
заранее спасибо

venkatesh (chennai)

// Удалены повторяющиеся значения
var result = array.filter(функция (el, i, x) {
возвращает X.некоторые(функция (объект, Дж) {
вернуться в obj.имя === Эл.имя &усилитель;& (х = Дж);
}) && i == x;
});

1 Ответов

Рейтинг:
2

Pete O'Hanlon

Проблема, с которой вы столкнулись здесь, заключается в том, что вы просто толкаете имя. Что еще более важно, вы столкнетесь с проблемой, когда то, что вы пытаетесь найти, является сложным типом, поэтому вам придется свернуть свою собственную реализацию. К счастью, это довольно тривиальная вещь. Прежде всего, вы просто добавите свою собственную версию indexOf (что-то вроде этого будет сделано):

Array.prototype.complexIndexOf = function(type) {
  for (var x = 0; x < this.length; x++) {
    if (this[x].id === type.id && this[x].name === type.name)
	  return i;
  }
  return -1;
}
Имея этот прототип на месте, вы просто меняете условие в своем цикле for на:
if (t.complexIndexOf(array[x]))t.push(array);