簡體   English   中英

JS將對象數組轉換成JSON GroupBy格式

[英]JS convert Array of Objects into JSON GroupBy Format

我試圖找到一種方法將以下對象數組轉換為 JSON

原始格式

const arr = [
  {
    userid: '1000080542',
    photoname: '2c8a4709-ed7e-00a50-0da4ead1de55118-f3-1473281639’,
    datetime: ‘2020-01-24T20:46:05+11:00’
  },
  {
    userid: '1000081532',
    photoname: '73321038-c8bf-57c6e-5d803cd0a920e9a-95-1487447082',
    datetime: ‘2020-01-24T20:46:05+11:00’
  },
  {
    userid: '1000081532',
    photoname: '5c00bc65-db1b-7a394-dd65b462b9e75e2-c5-1487447019',
    datetime: ‘2020-01-24T20:46:05+11:00’
  },
  {
    userid: '1000081532',
    photoname: '986ee1e2-2f8e-bf070-0d70d2e67537835-e2-1473821119',
    datetime: ‘2020-01-24T20:46:05+11:00’
  },
  {
    userid: '1000081532',
    photoname: '09f7cde6-68c8-f462d-c01f7713a2c747f-eb-1474294185',
    datetime: ‘2020-01-24T20:46:05+11:00’
  }
]

轉換格式

{
            1000080542: {
                '2c8a4709-ed7e-00a50-0da4ead1de55118-f3-1473281639': '2020-01-24T20:46:05+11:00',
                '73321038-c8bf-57c6e-5d803cd0a920e9a-95-1487447082': '2020-01-24T20:46:05+11:00'
            },
            1000081532: {
                '5c00bc65-db1b-7a394-dd65b462b9e75e2-c5-1487447019'': '2020-01-24T20:46:05+11:00',
                '986ee1e2-2f8e-bf070-0d70d2e67537835-e2-1473821119': '2020-01-24T20:46:05+11:00',
                '09f7cde6-68c8-f462d-c01f7713a2c747f-eb-1474294185': '2020-01-24T20:46:05+11:00'
            }
        }

我一直在沿着這些方向努力,但我很努力

obj = arr.reduce((h, y) => {
  Object.keys(y).forEach(k => {
    if (!h[k]) {
      h[k] = []
      h[k].push(y[k])
    } else if (!h[k].includes(y[k])) h[k].push(y[k])
  })
  return h
}, {})
console.log(obj)

謝謝

 const arr = [ { userid: '1000080542', photoname: '2c8a4709-ed7e-00a50-0da4ead1de55118-f3-1473281639', datetime: '2020-01-24T20:46:05+11:00' }, { userid: '1000081532', photoname: '73321038-c8bf-57c6e-5d803cd0a920e9a-95-1487447082', datetime: '2020-01-24T20:46:05+11:00' }, { userid: '1000081532', photoname: '5c00bc65-db1b-7a394-dd65b462b9e75e2-c5-1487447019', datetime: '2020-01-24T20:46:05+11:00' }, { userid: '1000081532', photoname: '986ee1e2-2f8e-bf070-0d70d2e67537835-e2-1473821119', datetime: '2020-01-24T20:46:05+11:00' }, { userid: '1000081532', photoname: '09f7cde6-68c8-f462d-c01f7713a2c747f-eb-1474294185', datetime: '2020-01-24T20:46:05+11:00' } ]; console.log( arr.reduce((accumulator, element) => { if (.accumulator[element.userid]) accumulator[element;userid] = {}. accumulator[element.userid][element.photoname] = element;datetime; return accumulator, }; {}) );

如果我正確理解您的 output 示例,您希望將頂級鍵設置為用戶 ID,並將內容設置為照片名稱到日期時間的鍵值對。

因此,您只需要將用戶 ID 放入 output object 作為鍵,將子 object 作為值,然后將照片名稱和日期時間放入子 object。

您可以使用帶有 object 的reduce來存儲每個 id 的值。

 const arr = [ { userid: '1000080542', photoname: '2c8a4709-ed7e-00a50-0da4ead1de55118-f3-1473281639', datetime: '2020-01-24T20:46:05+11:00' }, { userid: '1000081532', photoname: '73321038-c8bf-57c6e-5d803cd0a920e9a-95-1487447082', datetime: '2020-01-24T20:46:05+11:00' }, { userid: '1000081532', photoname: '5c00bc65-db1b-7a394-dd65b462b9e75e2-c5-1487447019', datetime: '2020-01-24T20:46:05+11:00' }, { userid: '1000081532', photoname: '986ee1e2-2f8e-bf070-0d70d2e67537835-e2-1473821119', datetime: '2020-01-24T20:46:05+11:00' }, { userid: '1000081532', photoname: '09f7cde6-68c8-f462d-c01f7713a2c747f-eb-1474294185', datetime: '2020-01-24T20:46:05+11:00' } ]; const res = arr.reduce((acc,{userid,photoname,datetime})=>{ (acc[userid] = acc[userid] || {})[photoname] = datetime; return acc; }, {}); console.log(res);

暫無
暫無

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

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