Так что с вашим кодом вам нужно посмотреть на другой объект и посмотреть, есть ли у него какие-либо ключи, которые соответствуют. Если оно совпадает, вам нужно проверить, соответствует ли сообщение. Таким образом, вы можете сделать поиск объекта, который имеет список идентификаторов. Вы можете чем l oop над своим вторым массивом и посмотреть, если они идут.
var a = [
{toNumber: "123", message: "Hi Deep "},
{toNumber: "321", message: "Test1"}
]
var b = [
{toNumber: "321", message: "Test2"},
{toNumber: "123", message: "Hi Deep "}
]
// create the lookup from the first array
var lookup = a.reduce( function (lookUpObj, entryA) {
// set the object property with the toNumber property
lookUpObj[entryA.toNumber] = entryA.message
return lookUpObj
}, {})
// Now loop over the array and look for the differences
var diff = b.reduce(function (arr, entryB) {
// grab the entry from the lookup object we created
var orginalMessage = lookup[entryB.toNumber]
// if we do not have it listed OR the message is different
// add it to the list as changed.
if (!orginalMessage || orginalMessage !== entryB.message) {
arr.push(entryB)
}
return arr
}, [])
console.log(diff)
Теперь это будет соответствовать любым различиям от a до b. Если в B было удалено что-либо, кроме A, оно не будет поймано.