मान लीजिए, हमारे पास ऑब्जेक्ट्स का एक ऐरे है जैसे:
const arr = [
{"firstName":"John", "value": 89},
{"firstName":"Peter", "value": 151},
{"firstName":"Anna", "value": 200},
{"firstName":"Peter", "value": 22},
{"firstName":"Anna","value": 60}
];
हमें एक JavaScript फंक्शन लिखना है जो ऐसा एक ऐरे लेता है और उन सभी ऑब्जेक्ट्स के value प्रॉपर्टी को जोड़ता है जिनके firstName प्रॉपर्टी का मान समान है।
इसलिए, उपरोक्त ऐरे के लिए, आउटपुट इस तरह दिखना चाहिए:
const output = [
{"firstName":"John", "value": 89},
{"firstName":"Peter", "value": 173},
{"firstName":"Anna", "value": 260}
];
प्रत्येक ऑब्जेक्ट के लिए, हम रिकर्सिवली उनके समान ऑब्जेक्ट्स ढूंढेंगे (इस सवाल के संदर्भ में समान ऑब्जेक्ट वे हैं जिनका firstName मान समान है)। हम फिर value प्रॉपर्टी को एक ऑब्जेक्ट में जोड़ देंगे और दूसरे ऑब्जेक्ट को ऐरे से हटा देंगे। यह तब तक किया जाएगा जब तक हम ऐरे के अंत तक नहीं पहुंच जाते। अंत में पहुंचने पर, हमारा ऐरे वांछित ऐरे में रिड्यूस हो जाएगा।
उदाहरण
निम्नलिखित कोड है:
const arr = [
{"firstName":"John", "value": 89},
{"firstName":"Peter", "value": 151},
{"firstName":"Anna", "value": 200},
{"firstName":"Peter", "value": 22},
{"firstName":"Anna","value": 60}
];
const sumSimilar = arr => {
const res = [];
for(let i = 0; i < arr.length; i++){
const ind = res.findIndex(el => el.firstName === arr[i].firstName);
if(ind === -1){
res.push(arr[i]);
}else{
res[ind].value += arr[i].value;
};
};
return res;
};
console.log(sumSimilar(arr));
आउटपुट
यह कंसोल में निम्नलिखिक आउटपुट देगा:
[
{ firstName: 'John', value: 89 },
{ firstName: 'Peter', value: 173 },
{ firstName: 'Anna', value: 260 }
]