मान लीजिए हमारे पास एक सरणी है जो 't'/'f' द्वारा दर्शाए गए true/false की है जिसे हमने किसी डेटाबेस से पुनर्प्राप्त किया है जैसे -
const arr = ['f', 't', 'f', 't', 't', 't', 'f', 'f', 't', 't', 't', 't', 't', 't', 'f', 't'];
हमें एक JavaScript फ़ंक्शन लिखना है जो ऐसी एक सरणी लेता है। हमारा फ़ंक्शन उन 't' की लगातार उपस्थिति को गिनना चाहिए जो दो 'f' के बीच सैंडविच हैं और उस गिनती की एक सरणी लौटानी चाहिए।
इसलिए, उपरोक्त सरणी के लिए, आउटपुट इस तरह दिखना चाहिए -
const output = [1, 3, 6, 1];
उदाहरण
इसके लिए कोड होगा -
const arr = ['f', 't', 'f', 't', 't', 't', 'f', 'f', 't', 't', 't', 't', 't', 't', 'f', 't'];
const countClusters = (arr = []) => {
let res = [];
res = arr.reduce((acc, val) => {
const { length: l } = acc;
if(val === 't'){
acc[l - 1]++;
}
else if(acc[l - 1] !== 0){
acc.push(0);
};
return acc;
}, [0]);
return res;
};
console.log(countClusters(arr));
आउटपुट
कंसोल में आउटपुट होगा -
[ 1, 3, 6, 1 ]