У меня есть два массива JavaScript orig
(исходный массив объектов) и update
(обновленный массив объектов), которые имеют одинаковую длину и содержат объекты, и я хочу вывести различия между каждой парой объектов.Как найти различия между двумя массивами JavaScript объектов?
Пример:
var orig = [{enabled:"true", name:"Obj1", id:3},{enabled:"true", name:"Obj2", id:4}];
var update = [{enabled:"true", name:"Obj1", id:3}, {enabled:"true", name:"Obj2-updated", id:4}];
Вывод должен быть: name:"Obj2-updated"
я осуществил что-то, но она нуждается в оптимизации ...
for(var prop=0; prop<orig.length; prop++) {
for(prop=0; prop<update.length; prop++) {
if(orig[prop].enabled != update.enabled) { console.log(update.enabled) }
if(orig[prop].name != update[prop].name) { console.log(update[prop].name) }
if(orig[prop].id != update[prop].id) { console.log(update[prop].id) }
}
}
- это вывод строки или объекта? или массив с объектами или строками, или? –
Хотя я не знаю вашего прецедента, мне кажется нецелесообразным иметь только список измененных значений, не зная, какой ключ и в каком объекте, который изменил значение, существует; вы уверены, что вам больше не нужны детали? Я не пытаюсь умалить ваш вопрос, но я пытаюсь предвидеть, каким может быть ваш следующий вопрос, если вы ошибаетесь в отношении необходимости изменения значений. –
Мне просто нужен этот вывод для создания строкового текста, который гласит: «Эй, вы изменили Obj2 на Obj2-updated». Но мне нужно только знать, какое свойство было изменено. – Valip