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

เปรียบเทียบ Array of Objects ใน JavaScript

โจทย์

ตรวจสอบว่าทุก object ใน blocks array มี id ที่อยู่ใน containers array ด้วย (containers[i].block.id) ถ้ามี id ใน blocks ที่ไม่อยู่ใน containers → false

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

const blocks = [ { id: 1 }, { id: 2 }, { id: 3 }, { id: 4 } ]; 
const containers = [ { block: { id: 1 } }, { block: { id: 2 } }, { block: { id: 3 } } ]; 
const checkProperty = (first, second) => { 
  const findInContainers = id => { 
    for(let i = 0; i < second.length; i++){ 
      if(second[i].block.id === id){ return true; }; 
    }; 
    return false; 
  }; 
  for(let i = 0; i < first.length; i++){ 
    if(!findInContainers(first[i].id)){ return false; }; 
  }; 
  return true; 
}; 
console.log(checkProperty(blocks, containers));

ผลลัพธ์

false

คำอธิบาย

blocks มี id: 1,2,3,4
containers มี block.id: 1,2,3
id 4 ไม่อยู่ใน containers → return false
ใช้ nested function findInContainers ค้นหา linear search
ปรับปรุงได้ด้วย Set: const ids = new Set(containers.map(c => c.block.id)) แล้ว blocks.every(b => ids.has(b.id))