Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में '_id' कुंजी के लिए समान मान वाले सभी ऑब्जेक्ट को एक साथ समूहित करें

<घंटा/>

मान लीजिए कि हमारे पास इस तरह की वस्तुओं की एक सरणी है -

const arr = [
   {_id : "1", S : "2"},
   {_id : "1", M : "4"},
   {_id : "2", M : "1"},
   {_id : "" , M : "1"},
   {_id : "3", S : "3"}
];

हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो एक ऐसी सरणी लेता है और सभी ऑब्जेक्ट्स को एक साथ समूहित करता है जिसमें '_id' कुंजी के लिए समान मान होता है।

इसलिए, अंतिम आउटपुट कुछ इस तरह दिखना चाहिए -

const output = [
   {_id : "1", M : "4", S : "2", Total: "6"},
   {_id : "2", M : "1", S : "0", Total: "1"},
   {_id : "6", M : "1", S : "0", Total: "1"},
   {_id : "3", M : "0", S : "3", Total: "3"}
];

उदाहरण

इसके लिए कोड होगा -

const arr = [
   {_id : "1", S : "2"},
   {_id : "1", M : "4"},
   {_id : "2", M : "1"},
   {_id : "6" , M : "1"},
   {_id : "3", S : "3"}
];
const pickAllConstraints = arr => {
   let constraints = [];
   arr.forEach(el => {
      const keys = Object.keys(el);
      constraints = [...constraints, ...keys];
   });
   return constraints.filter((el, ind) => el !== '_id' && ind === constraints.lastIndexOf(el));
};
const buildItem = (cons, el = {}, prev = {}) => {
   const item = {};
   let total = 0
   cons.forEach(i => {
      item[i] = (+el[i] || 0) + (+prev[i] || 0);
      total += item[i];
   });
   item.total = total;
   return item;
}
const buildCumulativeArray = arr => {
   const constraints = pickAllConstraints(arr);
   const map = {}, res = [];
   arr.forEach(el => {
      const { _id } = el;
      if(map.hasOwnProperty(_id)){
         res[map[_id] - 1] = {
            _id, ...buildItem(constraints, el, res[map[_id] - 1])
         };
      }else{
         map[_id] = res.push({
            _id, ...buildItem(constraints, el)
         });
      }
   });
   return res;
};
console.log(buildCumulativeArray(arr));

आउटपुट

और कंसोल में आउटपुट होगा -

[
   { _id: '1', M: 4, S: 2, total: 6 },
   { _id: '2', M: 1, S: 0, total: 1 },
   { _id: '6', M: 1, S: 0, total: 1 },
   { _id: '3', M: 0, S: 3, total: 3 }
]

  1. कुंजी/मूल्य जोड़े के लिए जावास्क्रिप्ट में ऑब्जेक्ट्स बनाम सरणी कैसे हल करें?

    इसे निम्न की तरह स्टोर करें - var players = {    600 : 'Sachin',    300 : 'Brad', }; कुंजी/मूल्य जोड़े के लिए, हमने उपरोक्त समाधान का उपयोग किया है, क्योंकि हम एक-से-एक चाहते थे। हमने कुंजी को लुकअप कुंजी के रूप में उपयोग करने के लिए ऐसा किया था। आप इस तरह और भी म

  1. जावास्क्रिप्ट में किसी मान के आधार पर वस्तुओं को कैसे समूहित करें?

    जावास्क्रिप्ट में मान के आधार पर वस्तुओं को समूहबद्ध करने के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />

  1. जावास्क्रिप्ट में वस्तुओं के लिए कम करने की विधि कैसे लागू करें?

    जावास्क्रिप्ट में वस्तुओं के लिए कम विधि लागू करने के लिए कोड निम्नलिखित है - उदाहरण <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <tit