समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो स्ट्रिंग्स की एक सरणी arr को पहले और एकमात्र आर्गुमेंट के रूप में लेता है।
हमारे फ़ंक्शन को उन सभी वर्णों की एक सरणी वापस करनी चाहिए जो सरणी arr के भीतर सभी स्ट्रिंग्स में दिखाई देते हैं (डुप्लिकेट सहित)।
उदाहरण के लिए, यदि कोई वर्ण सभी स्ट्रिंग्स में 2 बार आता है लेकिन 3 बार नहीं, तो हमें उस वर्ण को अंतिम उत्तर में 2 बार शामिल करना होगा।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
const arr = ['door', 'floor', 'crook'];
तो आउटपुट होना चाहिए -
const output = ['r', 'o', 'o'];
उदाहरण
इसके लिए कोड होगा -
const arr = ['door', 'floor', 'crook'];
const findCommon = (arr = []) => {
let prev = null;
arr.forEach((str) => {
const next = {};
for(const val of str){
if(!prev){
next[val] = (next[val] || 0) + 1;
}else if(prev[val]){
prev[val] -= 1;
next[val] = (next[val] || 0) + 1;
};
};
prev = next;
});
const res = Object.keys(prev).reduce((acc, val) => {
for(let i = 0; i < prev[val]; i++){
acc.push(val);
}
return acc;
}, []);
return res;
};
console.log(findCommon(arr));
आउटपुट
कंसोल में आउटपुट होगा -
[ 'r', 'o', 'o' ]