Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

JavaScript นับจำนวนองค์ประกอบที่ไม่ซ้ำในอาร์เรย์ของวัตถุโดยคุณสมบัติของวัตถุหรือไม่


สมมติว่าเรามีอาร์เรย์ของวัตถุต่อไปนี้ที่มีข้อมูลเกี่ยวกับคำสั่งซื้อที่วางไว้ในร้านอาหาร -

const orders = [
   {table_id: 3, food_id: 5},
   {table_id: 4, food_id: 2},
   {table_id: 1, food_id: 6},
   {table_id: 3, food_id: 4},
   {table_id: 4, food_id: 6},
];

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว ฟังก์ชันของเราควรนับจำนวนของคุณสมบัติ table_id ที่ไม่ซ้ำในอาร์เรย์ (เช่น จำนวนตารางที่ไม่ซ้ำสำหรับการจองคำสั่งซื้อ)

และจำนวนของคุณสมบัติ food_id ที่ไม่ซ้ำกัน (เช่น จำนวนอาหารจานพิเศษที่สั่ง)

ตัวอย่าง

const orders = [
   {table_id: 3, food_id: 5},
   {table_id: 4, food_id: 2},
   {table_id: 1, food_id: 6},
   {table_id: 3, food_id: 4},
   {table_id: 4, food_id: 6},
];
const countUniques = (orders = []) => {
   const tableObj = {}, foodObj = {};
   orders.forEach(el => {
      tableObj[el.table_id] = null;
      foodObj[el.food_id] = null;
   });
   const tableUniqueIDs = Object.keys(tableObj).length;
   const foodUniqueIDs = Object.keys(foodObj).length;
   return {
      tableUniqueIDs, foodUniqueIDs
   };
};
console.log(countUniques(orders));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

{ tableUniqueIDs: 3, foodUniqueIDs: 4 }