簡體   English   中英

javascript 中的數組差異

[英]array difference in javascript

我知道這會很簡單,但我嘗試了兩天,所以我終於決定向你們尋求幫助......我已經嘗試過這個可能與我的問題相同的問題,但它沒有給我答案。

好的,這是兩個數組

a = [{toNumber: "123", message: "Hi Deep "}, {toNumber: "321", message: "Test1"}]
b = [{toNumber: "321", message: "Test2"}, {toNumber: "123", message: "Hi Deep "}]

我想要的是

diff = [{toNumber: "321", message: "Test2"}]

如此快速的幫助將非常受歡迎。

因此,使用您的代碼,您需要查看其他 object 並查看它是否有任何匹配的鍵。 如果匹配,則需要查看消息是否匹配。 因此,您可以查找具有 id 列表的 object。 你可以遍歷你的第二個數組,看看他們是否行進。

 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 中的任何內容,則不會被捕獲。

問題出在哪里???

 const a = [ { toNumber: "123", message: "Hi Deep " }, { toNumber: "321", message: "Test1" } ] const b = [ { toNumber: "321", message: "Test2" }, { toNumber: "123", message: "Hi Deep " } ] const diff = b.filter(eB=>.a.some(eA=>( eA.toNumber===eB.toNumber && eA.message===eB.message ))) document.write( JSON.stringify( diff ) )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM