Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Đọc theo khóa và parse thành JSON trong JavaScript

Giả sử chúng ta có mảng JSON như sau:

const arr = [{ 
  "data": [ 
    { "W": 1, "A1": "123" }, 
    { "W": 1, "A1": "456" }, 
    { "W": 2, "A1": "4578" }, 
    { "W": 2, "A1": "2423" }, 
    { "W": 2, "A1": "2432" }, 
    { "W": 2, "A1": "24324" } 
  ] 
}];

Yêu cầu: viết hàm chuyển đổi thành mảng JSON sau:

[ 
  { "1": [ { "A1": "123" }, { "A1": "456" } ] }, 
  { "2": [ { "A1": "4578" }, { "A1": "2423" }, { "A1": "2432" }, { "A1": "24324" } ] } 
]

Ví dụ

Mã minh họa:

const arr = [{ 
  "data": [ 
    { "W": 1, "A1": "123" }, 
    { "W": 1, "A1": "456" }, 
    { "W": 2, "A1": "4578" }, 
    { "W": 2, "A1": "2423" }, 
    { "W": 2, "A1": "2432" }, 
    { "W": 2, "A1": "24324" } 
  ] 
}]; 
const groupJSON = (arr = []) => { 
  const preCombined = arr[0].data.reduce((acc, val) => { 
    acc[val.W] = acc[val.W] || []; 
    acc[val.W].push({ A1: val.A1 }); 
    return acc; 
  }, {}); 
  const combined = Object.keys(preCombined).reduce((acc, val) => { 
    const temp = {}; 
    temp[val] = preCombined[val]; 
    acc.push(temp); 
    return acc; 
  }, []); 
  return combined; 
}; 
console.log(JSON.stringify(groupJSON(arr), undefined, 4));

Kết quả

Đầu ra trên console:

[ 
  { 
    "1": [ 
      { "A1": "123" }, 
      { "A1": "456" } 
    ] 
  }, 
  { 
    "2": [ 
      { "A1": "4578" }, 
      { "A1": "2423" }, 
      { "A1": "2432" }, 
      { "A1": "24324" } 
    ] 
  } 
]