在開發過程中我們會遇到例如歷史記錄翻頁,還有帶有日期評論的論壇翻頁,遇到對象鍵相同數據合並的問題
在這里舉個例子,這個需求是 歷史評論 ,日期下面有評論數據,就是比如后端第一頁返回的是10條數據,數據格式如下(第一頁的數據):

然后我們前端渲染是把鍵渲染出來就是日期的分割,然后鍵對應的數組就是渲染的數據

這里就有個問題了,就是上拉加載到 第二頁 的時候假如還有 2020-11-13的數據,那么渲染的時候日期就會變成有兩個2020-11-13的日期分割線數據,下面的 第二頁 的數據(注意這里是第二頁請求回來的數據):

顯然這樣與需求不符合,這樣的話就需要我們把第二頁中的2020-11-13和第一頁的合並起來
這里我們需要用到js的一個對象方法 :hasOwnProperty()
它的作用是返回一個布爾值,判斷對象是否包含特定的自身
下面請看具體代碼
//這里ajax就寫成你們請求的方法,data就是返回來的數據;這個ajax就是每一次上拉加載翻頁請求一次的函數 var centendata = {}; ajax((data)=>{ if(data.length!=0){ //把對象鍵值循環出來 for(var l in data){ for(var i in centendata){ //如果鍵值相等就用數組處理方法把請求回來的數據push進去 if(i==l){ centendata[i].push(...data[l]); } } //如果沒有這個鍵值,那么就賦值一個 if(!centendata.hasOwnProperty(l)){ centendata[l]= data[l] } } })
這樣的話我們翻頁就得到已經處理好 我們想要渲染的數據,如下
請求第一頁和下翻第二頁的時候鍵相等的數據合並了:

