โจทย์
ตรวจสอบว่าทุก 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))