Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

อ่านข้อมูลด้วย key และแปลงเป็น JSON - JavaScript

มี JSON array ต้องจัดกลุ่มตาม key "W" แล้วเก็บ "A1"

ตัวอย่างโค้ด

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));

ผลลัพธ์

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

คำอธิบาย: reduce() ครั้งแรกจัดกลุ่มตาม W เป็นอ็อบเจ็กต์ {1: [...], 2: [...]} ครั้งที่สองแปลงเป็นอาร์เรย์ของอ็อบเจ็กต์ {key: [...]} JSON.stringify(..., undefined, 4) pretty print indent 4 spaces