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

แปลงออบเจกต์เป็นอาร์เรย์ของออบเจกต์ใน JavaScript


สมมติว่าเรามีออบเจกต์ที่มีข้อมูลบุคคลดังนี้

const obj = { 
  "Person1_Age": 22, 
  "Person1_Height": 170, 
  "Person1_Weight": 72, 
  "Person2_Age": 27, 
  "Person2_Height": 160, 
  "Person2_Weight": 56 
};

เราต้องเขียนฟังก์ชัน JavaScript ที่รับออบเจกต์ดังกล่าว ฟังก์ชันควรแยกข้อมูลของแต่ละบุคคลเป็นออบเจกต์ของตนเอง

ดังนั้น ผลลัพธ์สำหรับออบเจกต์ข้างต้นควรเป็นดังนี้

const output = [ 
  { 
    "name": "Person1", 
    "age": "22", 
    "height": 170, 
    "weight": 72 
  }, 
  { 
    "name": "Person2", 
    "age": "27", 
    "height": 160, 
    "weight": 56 
  } 
];

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

โค้ดสำหรับการทำงานนี้จะเป็นดังนี้

const obj = { 
  "Person1_Age": 22, 
  "Person1_Height": 170, 
  "Person1_Weight": 72, 
  "Person2_Age": 27, 
  "Person2_Height": 160, 
  "Person2_Weight": 56 
}; 
const separateOut = (obj = {}) => { 
  const res = []; 
  Object.keys(obj).forEach(el => { 
    const part = el.split('_'); 
    const person = part[0]; 
    const info = part[1].toLowerCase(); 
    if(!this[person]){ 
      this[person] = { 
        "name": person 
      }; 
      res.push(this[person]); 
    } 
    this[person][info] = obj[el]; 
  }, {}); 
  return res; 
}; 
console.log(separateOut(obj));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้

[ 
  { name: 'Person1', age: 22, height: 170, weight: 72 }, 
  { name: 'Person2', age: 27, height: 160, weight: 56 } 
]