Так же, как это сделано в php
( ссылка ), но я хотел бы сделать это в javascript
.
var data1 = [{
"id": 1,
"nombre": "Mezcla"
},
{
"id": 6,
"nombre": "No Se"
},
{
"id": 5,
"nombre": "Etiquetado"
},
{
"id": 4,
"nombre": "Vaciado"
},
{
"id": 3,
"nombre": "Llenado"
},
{
"id": 2,
"nombre": "Esterilizacion"
}
];
console.log(data1);
var data2 = [{
"id": 1,
"nombre": "Mezcla"
},
{
"id": 4,
"nombre": "Vaciado"
},
{
"id": 3,
"nombre": "Llenado"
},
{
"id": 2,
"nombre": "Esterilizacion"
}
];
console.log(data2);
Обновление 1:
из этих 2 arrays
я возвращаю следующее:
var data3 = [{
"id": 6,
"nombre": "No Se"
},
{
"id": 5,
"nombre": "Etiquetado"
}
];
console.log(data3);
Я не знаю, тот ли это способ, которым вы ищете, но я добавляю его, так как он достигает ожидаемого результата. перебрать два массива с двумя
For
простыми. затем перейдите к сравнению различий между полями.Это очевидно можно сделать на чистом javascript, но для работы с коллекциями уже есть хорошо зарекомендовавшие себя инструменты вроде underscore и lodash .
В следующем решении используется метод поиска lodash.
Основная сложность вашего вопроса заключается в том, что в javascript два объекта не равны друг другу, даже если они имеют одинаковые свойства. Так же ищем наличие определенного объекта с помощью метода
indexOf
Он всегда будет говорить, что объект не находится в массиве. Было бы необходимо реализовать функцию равенства, которая выполняется, когда перечисляемые свойства двух объектов совпадают, а затем пройтись по обоим массивам во вложенных циклах, проверяя, есть ли элементы, которые выполняют эту пользовательскую функцию. Я бы предпочел не изобретать велосипед.
Здесь я оставляю версию на чистом JavaScript, хотя она немного «некрасивая». Идея состоит в том, чтобы преобразовать объекты в строки, чтобы с ними было проще работать. И шаги будут такими:
Код будет выглядеть так:
Если вы не хотите преобразовывать объекты в строки, вы можете определить свою собственную функцию сравнения и просмотреть массивы в поисках повторяющихся элементов (вместо использования
indexOf
).Что-то вроде этого:
Вот моя версия,
array_diff_assoc
которая:1 o más
мероприятияJSON.stringify
arr1
, которых нет во всем остальном .демонстрация:
Основываясь на вашем вопросе, я предположил, что объекты всегда будут простыми, без методов или html-узлов, иначе решение было бы немного сложнее.
Моя версия этого вопроса