हमें एक स्ट्रिंग दी गई है जिसमें डैश (-) द्वारा अलग किए गए कुछ दोहराए जाने वाले शब्द इस तरह हैं -
const str ='सोमवार-रविवार-मंगलवार-मंगलवार-रविवार-रविवार-सोमवार-सोमवार';
अब हमारा काम एक ऐसा फ़ंक्शन लिखना है जो ऑब्जेक्ट्स की एक सरणी देता है, जहां प्रत्येक ऑब्जेक्ट में दो गुण मान और गिनती होती है, मान स्ट्रिंग में शब्द है (सोमवार, मंगलवार, रविवार) और गिनती उनकी लगातार उपस्थिति गणना है।
उपरोक्त स्ट्रिंग की तरह, यह सरणी कुछ इस तरह दिखाई देगी -
const arr =[{ val:'Monday', count:1}, {val:'sunday', count:1}, {val:'मंगलवार', गिनती:2}, { वैल:'रविवार', गिनती:2}, { वैल:'सोमवार', गिनती:3}]
क्योंकि सोमवार एक बार, रविवार को एक बार, मंगलवार को दो बार, रविवार को दो बार और अंतिम सोमवार को तीन बार दिखाई देता है।
हम सरणी को विभाजित करेंगे और फिर Array.prototype.reduce() विधि का उपयोग इस तरह से वांछित सरणी को पुनरावर्ती रूप से वापस करने के लिए करेंगे -
ये रहा पूरा कोड -
उदाहरण
const str ='सोमवार-रविवार-मंगलवार-मंगलवार-रविवार-रविवार-सोमवार-सोमवार';const str2 ='शुक्रवार-शुक्रवार-रविवार-मंगलवार-रविवार-रविवार-सोमवार-गुरुवार';const compressString =(str ) => {वापसी str.split('-').reduce((acc, val) => { const {लंबाई:l} =acc; if(acc[l-1]?.val ===val){ एसीसी [एल -1]। गिनती ++; वापसी एसीसी; } और {वापसी acc.concat ({ वैल, गिनती:1}); }}, []);} कंसोल.लॉग (कंप्रेसस्ट्रिंग (str)); कंसोल.लॉग (compressString(str2));
आउटपुट
उपरोक्त कोड के लिए कंसोल में आउटपुट होगा -
[ { वैल:'सोमवार', गिनती:1}, {वैल:'रविवार', गिनती:1}, {वैल:'मंगलवार', गिनती:2}, {वैल:'रविवार', गिनती:2 }, { वैल:'सोमवार', गिनती:3}] [{वैल:'फ्राइडे', गिनती:2}, {वैल:'रविवार', गिनती:1}, {वैल:'मंगलवार', गिनती:1} , { वैल:'रविवार', गिनती:2}, {वैल:'सोमवार', गिनती:1}, {वैल:'गुरुवार', गिनती:1}, {वैल:'सोमवार', गिनती:1}]पूर्व>