1. 程式人生 > 實用技巧 >JS將陣列按格式補全

JS將陣列按格式補全

前言概述:

要求完成以下的目標:統計一週內的騎行距離,如果沒有騎行,顯示距離為零;

我們知道,很多時候資料庫都只記錄有內容的資料,沒有內容的資料是不會被記錄的,比如說某天沒有騎行,系統不會把當天騎行距離為零記錄到資料庫,這樣就產生個問題,前端頁面要顯示的資料格式如下 ↓↓↓

週一 週二 週三 週四 週五 週六 週日
距離(km) 20 0 22 25 0 0 40

但是從後端查詢到的資料卻是 ↓↓↓

週一 週三 週四 週日
距離(km) 20  22 25 40

辣麼,現在的問題就是,缺少了那部分距離為0的資料,頁面沒法正常顯示;這時候就需要我們重新組織資料了;

話不多說,直接上程式碼:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8">
 5         <title>示例</title>
 6     </head>
 7     <body>
 8         <script>
 9             //KEY模板
10             const template = [ "週一", "週二", "週三", "週四", "週五", "週六", "
週日"]; 11 12 //後端返回的json 13 let list = [{ 14 "name":"週一","value" : 20 15 }, { 16 "name":"週三","value" : 22 17 }, { 18 "name":"週四","value" : 25 19 }, { 20 "name":"週日","value" : 40 21 }];
22 23 //最終結果 24 let _list = []; 25 26 //迴圈模板,確保能夠按照模板的數量組織資料 27 for (var i = 0; i < template.length; i++) { 28 let k = template[i]; 29 30 //建立一個物件模型 31 let entity = {"name":"","value":0}; 32 33 //“倒序”迴圈已有的資料 34 for (let j = 0; j < i+1 ; j++) { 35 let item = list[j]; 36 if (item.name === k) { 37 //如果模板中的KEY跟當前物件的KEY一致,則新增該物件到空集合 38 _list.push(item); 39 list.splice(j,1);//從集合中刪除當前物件 40 }else{ 41 //如果模板中的KEY跟當前物件的KEY不一致,設定物件模型的KEY為模板的KEY,設定值為0,新增到空集合 42 entity.name = k; 43 entity.value = 0; 44 _list.push(entity); 45 } 46 break;//確保迴圈只進行一次 47 } 48 } 49 50 console.log(_list); 51 </script> 52 </body> 53 </html>

複製以上程式碼,儲存為HTML檔案;在瀏覽器開啟,檢視控制檯,可以看到我們想到的資料。