สมมติว่าเรามีอาร์เรย์ของอาร์เรย์ดังนี้
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' ]
}
]