मान लीजिए, हमारे पास ऑब्जेक्ट्स की एक सरणी है जैसे -
const arr = [ { "SupplierName" : "John", "Category " : "A", "Points" : 3 }, { "SupplierName" : "John", "Category " : "A", "Points" : 11 }, { "SupplierName" : "John", "Category " : "A", "Points" : undefined }, { "SupplierName" : "John", "Category " : "B", "Points" : 2 }, { "SupplierName" : "John", "Category " : "B", "Points" : 6 }, { "SupplierName" : "Praveen", "Category " : "A", "Points" : 3 }, { "SupplierName" : "Praveen", "Category " : "A", "Points" : 7 } ];हमें एक JavaScript फ़ंक्शन लिखना है जो ऐसी एक सरणी लेता है।
फ़ंक्शन को निम्नलिखित चीजें करनी चाहिए -
- दोहराने वाले सप्लायर्स को एक अद्वितीय अलग ऑब्जेक्ट में समूहित करें (दोहराने से, हमारा मतलब है "SupplierName" और "Category" फ़ील्ड वाले ऑब्जेक्ट्स)।
- उनके पॉइंट्स को एक साथ जोड़ें
- प्रत्येक ऑब्जेक्ट में एक नया "average" फ़ील्ड जोड़ें, जिसमें उस सप्लायर के औसत पॉइंट्स हों।
तो, अंत में आउटपुट इस तरह दिखना चाहिए -
const output = [ { "SupplierName" : "John", "Category " : "A", "Points" : 14, "Average" : 7 }, { "SupplierName" : "John", "Category " : "B", "Points" : 8, "Average" : 4 }, { "SupplierName" : "Praveen", "Category " : "A", "Points" : 10, "Average" : 5 } ];उदाहरण
const arr = [ { "SupplierName" : "John", "Category " : "A", "Points" : 3 }, { "SupplierName" : "John", "Category " : "A", "Points" : 11 }, { "SupplierName" : "John", "Category " : "A", "Points" : undefined }, { "SupplierName" : "John", "Category " : "B", "Points" : 2 }, { "SupplierName" : "John", "Category " : "B", "Points" : 6 }, { "SupplierName" : "Praveen", "Category " : "A", "Points" : 3 }, { "SupplierName" : "Praveen", "Category " : "A", "Points" : 7 } ]; const groupAndAverage = (arr = []) => { const groups = arr.reduce((acc, obj) => { const name = obj.SupplierName + obj.Category; if (acc[name]) { if (obj.Points) (acc[name].Points += obj.Points) && ++acc[name].Average; } else { acc[name] = obj; acc[name].Average = 1; // पहले चरण में आइटम काउंटर के रूप में 'Average' विशेषता लेना }; return acc; }, {}); // "पॉइंट्स का औसत" प्राप्त करना const res = Object.keys(groups).map( name => { groups[name].Average = Math.round(groups[name].Points/groups[name].Average); return groups[name]; }); return res; }; console.log(JSON.stringify(groupAndAverage(arr), undefined, 4));आउटपुट
कंसोल में आउटपुट होगा -
[ { "SupplierName": "John", "Category ": "A", "Points": 22, "Average": 6 }, { "SupplierName": "Praveen", "Category ": "A", "Points": 10, "Average": 5 } ]