মান লজিয়ে, আমাদের নিচের মতো একটি স্ট্রিং লিটারেলের অ্যারে আছে −
const arr = [ "fiat-palio", "fiat-stilo", "fiat-strada", "fiat-uno", "fiat-uno", "gm-corsa", "gm-celta", "ford-fiesta", "volkswagen-gol", "volkswagen-gol", "volkswagen-gol", "volkswagen-voyage" ]
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা এমন একটি স্ট্রিং-এর অ্যারে নেয়। উপরের অ্যারে-তে সব এন্ট্রির একটি সাধারণ বিষয় আছে (স্ট্রিং হওয়া ছাড়া), সেগুলো সব একটি ড্যাশ ('-') দিয়ে বিচ্ছিন্ন একটি স্ট্রিং পেয়ার।
ফাংশনটি একটি অবজেক্ট তৈরি করবে যেটিতে কী হবে ড্যাশের আগের অংশ এবং মান হবে অবজেক্ট যেটিতে মূল অ্যারে-তে প্রতিটি স্ট্রিং কতবার আসেছে তার কাউন্ট থাকবে।
সুতরাং, উপরের অ্যারে-র জন্য আউটপুট হবে নিচের মতো −
const output = {
"fiat": {
"palio": 1,
"stilo": 1,
"strada": 1,
"uno": 2
},
"gm": {
"corsa": 1,
"celta": 1
},
"ford": {
"fiesta": 1
},
"volkswagen": {
"gol": 3,
"voyage": 1
}
};
উদাহরণ
এটির কোড হবে −
const arr = [
"fiat-palio",
"fiat-stilo",
"fiat-strada",
"fiat-uno",
"fiat-uno",
"gm-corsa",
"gm-celta",
"ford-fiesta",
"volkswagen-gol",
"volkswagen-gol",
"volkswagen-gol",
"volkswagen-voyage"
];
const convertToObject = (arr = []) => {
let res = arr.reduce((acc, val) => {
let pair = val.split('-');
let mark = pair[0];
let model = pair[1];
if(!acc.hasOwnProperty(mark)) {
acc[mark] = {};
acc[mark][model] = 1;
} else {
if(acc[mark].hasOwnProperty(model)) {
acc[mark][model] += 1;
} else {
acc[mark][model] = 1;
}
}
return acc;
}, {})
return res;
}
console.log(convertToObject(arr));
আউটপুট
কনসোলে আউটপুট হবে −
{
fiat: { palio: 1, stilo: 1, strada: 1, uno: 2 },
gm: { corsa: 1, celta: 1 },
ford: { fiesta: 1 },
volkswagen: { gol: 3, voyage: 1 }
}