"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية دمج كائنات JavaScript بكفاءة مع مفاتيح مطابقة وتلخيص قيمها؟

كيفية دمج كائنات JavaScript بكفاءة مع مفاتيح مطابقة وتلخيص قيمها؟

نشر في 2025-03-22
تصفح:473

How to Efficiently Merge JavaScript Objects with Matching Keys and Sum Their Values?

دمج الكائنات مع خصائص مطابقة في صفائف javaScript

النظر في الصفيف التالي للكائنات:

{Key: "Mon Sep 23 2013 00:00:00 GMT-0400" ، Val: 42} ، {Key: "Mon Sep 24 2013 00:00:00 GMT-0400" ، Val: 78} ، {Key: "Mon Sep 25 2013 00:00:00 GMT-0400" ، Val: 23} ، {Key: "Mon Sep 23 2013 00:00:00 GMT-0400" ، Val: 54} ، ]
objArr = [
    {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:42},
    {key:"Mon Sep 24 2013 00:00:00 GMT-0400", val:78},
    {key:"Mon Sep 25 2013 00:00:00 GMT-0400", val:23},
    {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:54}, //  هدفنا هو دمج مفاتيح مكررة وتلخيص قيم كل منها ، مما يؤدي إلى: 

{Key: "Mon Sep 23 2013 00:00:00 GMT-0400" ، Val: 96} ، {Key: "Mon Sep 24 2013 00:00:00 GMT-0400" ، Val: 78} ، {Key: "Mon Sep 25 2013 00:00:00 GMT-0400" ، Val: 23} ]

reducedObjArr = [
    {key:"Mon Sep 23 2013 00:00:00 GMT-0400", val:96},
    {key:"Mon Sep 24 2013 00:00:00 GMT-0400", val:78},
    {key:"Mon Sep 25 2013 00:00:00 GMT-0400", val:23}
]

Const Countts = objarr.reduce ((Prev ، Curr) => { دع العد = prev.get (curr.key) || 0 ؛ Prev.Set (Curr.Key ، curr.val count) ؛ إرجاع السابق ؛ } ، خريطة جديدة ()) ؛ // تحويل الخريطة مرة أخرى إلى مجموعة من الكائنات const lelucedobjarr = [... counts] .map (([المفتاح ، القيمة]) => { إرجاع {key ، value} ؛ }) ؛

// Use a Map to count values with the same key
const counts = objArr.reduce((prev, curr) => {
  let count = prev.get(curr.key) || 0;
  prev.set(curr.key, curr.val   count);
  return prev;
}, new Map());

// Convert the Map back to an array of objects
const reducedObjArr = [...counts].map(([key, value]) => {
  return {key, value};
});
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3