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