簡體   English   中英

將對象轉換為數組並按對象鍵將它們分組

[英]Convert object to array and group them by object key

通過鍵將對象轉換為數組和組主題! (我不確定標題是否正確,但這是我需要的:

(如果當前鍵等於下一個鍵+1和上一個鍵-1且它們都具有相同的值,則需要單擊ck!)

這樣的輸入

{  
    "2019-07-17":{  
      "7":66,
      "8":66,
      "9":66,
      "11":70,
      "12":70,
      "16":70
   },
   "2019-07-18":{  
      "10":68,
      "11":68,
      "12":75,
      "14":75,
      "15":75,
      "18":70
   }
}

輸出應該是這樣的

{  
   "2019-07-17":[  
      {  
         "start":7,
         "end":9,
         "id":66
      },
      {  
         "start":11,
         "end":12,
         "id":70
      },
      {  
         "start":16,
         "end":17,
         "id":70
      }
   ],
   "2019-07-18":[  
      {  
         "start":10,
         "end":11,
         "id":68
      },
      {  
         "start":12,
         "end":13,
         "id":75
      },
      {  
         "start":14,
         "end":15,
         "id":75
      },
      {  
         "start":18,
         "end":19,
         "id":70
      }

   ]
}

您可以使用內部鍵和值對條目進行分組並獲得新對象。

 var data = { "2019-07-17": { 7: 66, 8: 66, 9: 66, 11: 70, 12: 70, 16: 70 }, "2019-07-18": { 10: 68, 11: 68, 12: 75, 14: 75, 15: 75, 18: 70 } }, result = Object.fromEntries(Object.entries(data).map(([k, v]) => { var values = Object.entries(v).reduce((r, [l, id], i, { [i - 1]: last }) => { if (last && +last[0] + 1 === +l && last[1] === id) { r[r.length - 1].end = +l; } else { r.push({ start: +l, end: +l + 1, id }); } return r; }, []); return [k, values]; })); console.log(result); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暫無
暫無

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

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