所以我有這樣的場景,我有一個客戶端應用程序它發送數據(對象數組)到服務器,然後將數據轉發到其他客戶連接到這臺服務器。JavaScript數組和對象:獲得差異,合併它們
在客戶端應用程序,該數據是不斷變化的,意思是:值的變化,在陣列內的新對象彈出,被刪除的對象,等等...
現在我想的其他客戶端總是收到最新的數據。而且因爲我不想讓客戶端應用程序只是推全新的數據,然後到其他客戶轉發全新的數據服務器,我決定讓客戶端應用程序只推變化(使用此庫:https://www.npmjs.com/package/deep-object-diff)。
的其他客戶然後接收對象的數組,只有已實際上改變因爲他們知道以前的數據陣列,我希望他們能「合併」變化的陣列與舊的數據對象的數據。
我的實際問題是合併。我不知道如何正確地做到這一點。特別是如果我有一個對象的數組沒有任何關鍵的對象。
所以我的數據看起來是這樣的:
let data = [
{
name: 'Peter',
age: 26,
sID: 546589995544
},
{
name: 'John',
age: 33,
sID: 554589525469
}
];
其實還有更多,但很好,這就是結構。
因此,如果比較庫說,這是改變:
let changes = {
{
age: 34,
sID: 554589525469
}
};
(請注意,我現在有對象的對象,而不是對象的數組那是什麼的DIFF庫的回報。)
我想合併的對象是
[
{
name: 'Peter',
age: 26,
sID: 546589995544
},
{
name: 'John',
age: 34,
sID: 554589525469
}
];
(約翰現在是一歲)
所以我完全相信,如果我將對象的關鍵字作爲標識符,這會容易得多,但我仍然認爲必須爲此場景提供解決方案。正如你所看到的,財產可以作爲一個標識符,它只是一個關鍵。
我會apprectiate如果有人能指出如何做,在這兩種情況下(有和沒有對象特定鍵)
合併相同ID的數據見https://stackoverflow.com/help/mcve – guest271314
現在你的問題的代碼無效... –