মান লিয়ে, আমাদের একটি JSON অবজেক্টের অ্যারে আছে -
const arr = [
{ "id": "03868185", "month_10": 6 },
{ "id": "03870584", "month_6": 2 },
{ "id": "03870584", "month_7": 5 },
{ "id": "51295", "month_1": 1 },
{ "id": "51295", "month_10": 1 },
{ "id": "55468", "month_11": 1 }
];
এখানে দেখতে পাচ্ছি একই "id" প্রোপার্টি কিছু অবজেক্টে রিপিট হয়েছে। আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা এমন একটি অ্যারে গ্রহণ করবে যাতে একটি নির্দিষ্ট "id" প্রোপার্টির সব কী/ভ্যালু জোড়া একসাথে গ্রুপ করা থাকে একক অবজেক্টে।
উদাহরণ
const arr = [
{ "id": "03868185", "month_10": 6 },
{ "id": "03870584", "month_6": 2 },
{ "id": "03870584", "month_7": 5 },
{ "id": "51295", "month_1": 1 },
{ "id": "51295", "month_10": 1 },
{ "id": "55468", "month_11": 1 }
];
const groupById = (arr = []) => {
const map = {};
const res = [];
arr.forEach(el => {
if(map.hasOwnProperty(el['id'])){
const index = map[el['id']] - 1;
const key = Object.keys(el)[1];
res[index][key] = el[key];
} else {
map[el['id']] = res.push(el);
}
});
return res;
};
console.log(groupById(arr));
আউটপুট
কনসোলে আউটপুট হবে -
[
{ id: '03868185', month_10: 6 },
{ id: '03870584', month_6: 2, month_7: 5 },
{ id: '51295', month_1: 1, month_10: 1 },
{ id: '55468', month_11: 1 }
]