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

วิธีแปลงคู่อาร์เรย์ซ้อนเป็นออบเจกต์ในอาร์เรย์ด้วย JavaScript


สมมติว่าเรามีอาร์เรย์ของอาร์เรย์ดังนี้

const arr = [ 
  [ 
    ['firstName', 'Joe'], 
    ['lastName', 'Blow'], 
    ['age', 42], 
    ['role', 'clerk'], 
    [ 
      ['firstName', 'Mary'], 
      ['lastName', 'Jenkins'], 
      ['age', 36], 
      ['role', 'manager'] 
    ] 
  ] 
];

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว ฟังก์ชันควรสร้างอาร์เรย์ของออบเจกต์จากอาร์เรย์ของอาร์เรย์นี้

อาร์เรย์เอาต์พุทควรประกอบด้วยออบเจกต์สำหรับแต่ละผู้ใช้ที่ไม่ซ้ำกันและรายละเอียดอื่นๆ เกี่ยวกับมัน

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

const output = [ 
  {firstName: 'Joe', lastName: 'Blow', age: 42, role: 'clerk'}, 
  {firstName: 'Mary', lastName: 'Jenkins', age: 36, role: 'manager'} 
];

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

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

const arr = [ 
  [ 
    ['firstName', 'Joe'], 
    ['lastName', 'Blow'], 
    ['age', 42], 
    ['role', 'clerk'], 
    [ 
      ['firstName', 'Mary'], 
      ['lastName', 'Jenkins'], 
      ['age', 36], 
      ['role', 'manager'] 
    ] 
  ] 
]; 
const convertToObject = (arr = []) => { 
  const empty = {}; 
  const res = arr.map(el => { 
    const object = this; 
    el.forEach(attr => { 
      let name = attr[0], value = attr[1]; 
      object[name] = value; 
      return object; 
    }, object); 
    return this; 
  }, empty); 
  return res; 
} 
console.log(convertToObject(arr));

ผลลัพธ์

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

[ 
  { 
    firstName: 'Joe', 
    lastName: 'Blow', 
    age: 42, 
    role: 'clerk', 
    'firstName,Mary': [ 'lastName', 'Jenkins' ] 
  } 
]