मान लीजिए हमारे पास स्ट्रिंग/संख्या लिटरल की एक सरणी है जिसमें कुछ डुप्लिकेट मान हैं:
const array = ['day', 'night', 'afternoon', 'night', 'noon', 'night', 'noon', 'day', 'afternoon', 'day', 'night'];
हमें एक फ़ंक्शन groupSimilar() लिखना है जो इस सरणी को लेता है और एक नई सरणी लौटाता है जहाँ सभी दोहराने वाली प्रविष्टियाँ एक उप-सरणी में पहले तत्व के रूप में एक साथ समूहीकृत हों और मूल सरणी में उनकी कुल संख्या दूसरे तत्व के रूप में हो।
इस उदाहरण के लिए, आउटपुट होना चाहिए:
[ ['day', 3], ['night', 4], ['afternoon', 2], ['noon', 2] ]
आइए इस फ़ंक्शन के लिए कोड लिखते हैं। हम एक नई, आवश्यक सरणी का निर्माण करने के लिए Array.prototype.map() फ़ंक्शन का उपयोग करेंगे, और हम सरणी में दोहराने वाली प्रविष्टियों पर नज़र रखने के लिए एक Map का उपयोग करेंगे:
उदाहरण
const array = ['day', 'night', 'afternoon', 'night', 'noon', 'night', 'noon', 'day', 'afternoon', 'day', 'night'];
const groupSimilar = arr => {
return arr.reduce((acc, val) => {
const { data, map } = acc;
const ind = map.get(val);
if (map.has(val)) {
data[ind][1]++;
} else {
map.set(val, data.push([val, 1]) - 1);
}
return { data, map };
}, {
data: [],
map: new Map()
}).data;
};
console.log(groupSimilar(array));
आउटपुट
कंसोल में आउटपुट होगा:
[ ['day', 3], ['night', 4], ['afternoon', 2], ['noon', 2] ]