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

เขียนฟังก์ชันรับอาร์เรย์ค่าและคืนอ็อบเจกต์ใน JavaScript ยังไง?

สมมติว่าเราต้องเขียนฟังก์ชัน classifyArray() ที่รับอาร์เรย์ที่มีชนิดข้อมูลหลากหลาย และคืนค่า Map() ที่จัดกลุ่มองค์ประกอบตามชนิดข้อมูลของพวกมัน

ตัวอย่างเช่น:

// หากอาร์เรย์อินพุตคือ:
const arr = ['class', 2, [7, 8, 9], {"name": "Michael"}, Symbol('foo'), true, false, 'name', 6];
// Map ที่ควรได้:
Map(5) {
  'string' => ['class', 'name'],
  'number' => [2, 6],
  'object' => [[7, 8, 9], { name: 'Michael' }],
  'symbol' => [Symbol(foo)],
  'boolean' => [true, false]
}

มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน:

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

const arr = ['class', 2, [7, 8, 9], {"name": "Michael"}, Symbol('foo'), true, false, 'name', 6];

const classifyArray = arr => {
  return arr.reduce((acc, val) => {
    const previousData = acc.get(typeof val);
    if (previousData) {
      acc.set(typeof val, [...previousData, val]);
    } else {
      acc.set(typeof val, [val]);
    }
    return acc;
  }, new Map());
};

console.log(classifyArray(arr));

ผลลัพธ์

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

Map(5) {
  'string' => ['class', 'name'],
  'number' => [2, 6],
  'object' => [[7, 8, 9], { name: 'Michael' }],
  'symbol' => [Symbol(foo)],
  'boolean' => [true, false]
}