সমস্যা বিবরণ
একটি রেফারেন্স অ্যারে (фраза) এবং অন্য একটি অ্যারে দেওয়া আছে। রেফারেন্স অ্যারের এলিমেন্টগুলো অন্য অ্যারেতে একসাথে পাওয়া গেলে সেগুলো জয়ন করে একটি এলিমেন্ট বানাতে হবে।
রেফারেন্স: ["your", "majesty", "they", "are", "ready"]
আন্য অ্যারে: ["your", "they are"]
আউটপুট: ["your", "majesty", "they are", "ready"]
সমাধান
const reference = ["your", "majesty", "they", "are", "ready"];
const another = ["your", "they are"];
const joinByReference = (reference = [], another = []) => {
const res = [];
const filtered = another.filter(a => a.split(" ").length > 1);
while (filtered.length) {
let anoWords = filtered.shift();
let len = anoWords.split(" ").length;
while (reference.length > len) {
let refWords = reference.slice(0, len).join(" ");
if (refWords == anoWords) {
res.push(refWords);
reference = reference.slice(len, reference.length);
break;
}
res.push(reference.shift());
}
}
return [...res, ...reference];
};
console.log(joinByReference(reference, another));
আউটপুট
[ 'your', 'majesty', 'they are', 'ready' ]
ব্যাখ্যা
anotherথেকে মাল্টি-ওয়ার্ড ফ্রেজ ফিল্টার করা হয়েছে।- রেফারেন্স অ্যারে থেকে স্লাইস लेकर ফ্রেজ ম্যাচ করা হয়েছে।
- ম্যাচ পাওয়া গেলে জয়ন করা ফ্রেজ পুশ করা হয়েছে এবং রেফারেন্স থেকে স্লাইস রিমুভ করা হয়েছে।