Учитывая массив объектов:Фильтр массив объектов для уникальных элементов
var arr = [
{a: "foo", b: "bar", c: "baz" },
{a: "foo", b: "bar", c: "qux" },
{a: "foo", b: "bar", c: "baz" },
{a: "foo", b: "bar", c: "qux" },
{a: "bar", b: "foo", c: "qux" },
{a: "bar", b: "qux", c: "foo" },
{a: "bar", b: "foo", c: "qux" }
];
Массив должен быть отфильтрован так только уникальные объекты остаются:
var arr = [
{a: "foo", b: "bar", c: "baz" },
{a: "foo", b: "bar", c: "qux" },
{a: "bar", b: "foo", c: "qux" },
{a: "bar", b: "qux", c: "foo" }
];
Для массивов простых строк, я использую
arr.filter(function (value, index, self) {
return self.indexOf(value) === index;
}
но это не работает на объектах. Все свойства должны быть сопоставлены в моем случае. Думаю, нужно какое-то глубокое сравнение?
Вы можете сцепить значение каждого объекта с разделитель и может добавить его к временному rray (Убедитесь, что индекс тот же). Затем вы можете сравнить его и удалить из основного массива. –
http://jsfiddle.net/791gqw27/ – Andy
Тот, кто хочет его снова открыть: не могли бы вы рассказать сообществу, почему вы думаете, что это не дубликат? – zerkms