সমস্যা বিবরণ
দুই অ্যারে দেওয়া আছে: মাসের নামের অ্যারে এবং ক্যাশফ্লো অবজেক্টের অ্যারে। এই দুটি মেলিয়ে একটি কম্বাইন্ড অবজেক্ট অ্যারে তৈরি করতে হবে যেখানে প্রতিটি মাসের জন্য ক্যাশফ্লো ভ্যালু থাকবে।
ইনপুট:
const months = ["jan", "feb", "mar", "apr"];
const cashflows = [
{'month': 'jan', 'value': 10},
{'month': 'mar', 'value': 20}
];
প্রত্যাশিত আউটপুট:
const output = [
{'month': 'jan', 'value': 10},
{'month': 'feb', 'value': ''},
{'month': 'mar', 'value': 20},
{'month': 'apr', 'value': ''}
];
সমাধান
const months = ["jan", "feb", "mar", "apr"];
const cashflows = [
{'month': 'jan', 'value': 10},
{'month': 'mar', 'value': 20}
];
const combineArrays = (months = [], cashflows = []) => {
let res = [];
res = months.map(function(month) {
return this[month] || { month: month, value: '' };
}, cashflows.reduce((acc, val) => {
acc[val.month] = val;
return acc;
}, Object.create(null)));
return res;
};
console.log(combineArrays(months, cashflows));
আউটপুট
[
{ month: 'jan', value: 10 },
{ month: 'feb', value: '' },
{ month: 'mar', value: 20 },
{ month: 'apr', value: '' }
]
কোড ব্যাখ্যা
cashflows.reduceদিয়ে মাসকে কী হিসেবে একটি লুকআপ অবজেক্ট তৈরি করা হয়েছে।months.mapদিয়ে প্রতিটি মাসের জন্য লুকআপ থেকে ভ্যালু খুঁজে বের করা হয়েছে। না পাওয়া গেলে ডিফল্ট অবজেক্ট রিটার্ন করা হয়েছে।Object.create(null)ব্যবহার করা হয়েছে প্রোটোটাইপ পলিউশন এড়াতে।