Я пытаюсь использовать lodash для сравнения двух массивов объектов и возврата разницы между ними, а затем добавления его в исходный набор данных. Причина состоит в том, что новые данные будут содержать те же данные из оригинала. Например, у меня есть 3 объекта в orgData
, и когда я запрашиваю newData
, он будет содержать то же самое orgData
плюс еще один объект.Использование lodash для сравнения и удаления объекта из массива
var orgData = [{
"id": 1000,
"title": "First item"
}, {
"id": 1001,
"title": "Second item"
}];
var newData = [{
"id": 1000,
"title": "First item"
}, {
"id": 1001,
"title": "Second item"
}, {
"id": 1002,
"title": "Third item"
}];
Мой единственный ограничителем в сравнении является id
, который является уникальным. Я пробовал следующее, но ошибка, которую я получаю, это «Невозможно прочитать свойство« id »undefined», что имеет смысл.
_.filter(orgData, function(o, x) {
return o.id !== newData[x].id;
}).forEach(function(x) {
orgData.push(x);
});
Этот вопрос может помочь вам: http://stackoverflow.com/questions/25764719/update-if-exists-or-add-new-element-to-array-of-objects-elegant-way-in-javascr – benhowdle89
Это вроде как, но это doesn 'help, когда newData имеет большую или меньшую длину, чем orgData. Как узнать, как добавить объект в массив или удалить объект из массива. – hybrid9