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

รวมสองออบเจกต์ใน JavaScript โดยละเลยค่า undefined

สมมติว่าเรามีออบเจกต์สองตัว คือ A และ B ดังนี้:

const A = { activity: 'purchased', count: undefined, time: '09:05:33' };
const B = { activity: 'purchased', count: '51', time: undefined };

เราต้องเขียนฟังก์ชัน JavaScript ที่รวมออบเจกต์ทั้งสองนี้ โดยคำนึงถึงว่า ถ้าคีย์ใดมีค่า truthy ไม่ควรถูกเขียนทับด้วยคีย์ที่มีค่า falsy

ถ้าเราทำแบบง่ายๆ ด้วย spread operator จะไม่สามารถติดตามค่า truthy/falsy ได้

ดังนั้น เราต้องทำด้วยวิธีการวนลูป (iterative approach)

ตัวอย่าง

const A = { activity: 'purchased', count: undefined, time: '09:05:33' };
const B = { activity: 'purchased', count: '51', time: undefined };
const mergeObject = (A, B) => {
  let res = {};
  Object.keys({...A, ...B}).map(key => {
    res[key] = B[key] || A[key];
  });
  return res;
};
console.log(mergeObject(A, B));

ผลลัพธ์

โค้ดนี้จะแสดงผลลัพธ์ดังต่อไปนี้บนคอนโซล:

{ activity: 'purchased', count: '51', time: '09:05:33' }