এই প্রশ্নের এখানে কিছু সত্যই সৃজনশীল উত্তর রয়েছে। এখানে অ্যারে দিয়ে শুরু করা তাদের জন্য একটি সহজ সমাধান। এটি যদি ইচ্ছা হয় তবে ECMAScript 3 কমপ্লায়েন্ট ব্রাউজারে সমস্ত ভাবেই কাজ করা যায়।
শুরু করার আগে স্প্লাইস সম্পর্কে কিছু জানুন।
মজিলা বিকাশকারী নেটওয়ার্ক: অ্যারে.প্রোটোটাইপ.স্প্লাইস ()
প্রথমে এর দুটি গুরুত্বপূর্ণ ফর্ম বুঝুন .splice()
।
let a1 = [1,2,3,4],
a2 = [1,2];
পদ্ধতি 1) একটি পছন্দসই সূচক থেকে শুরু করে এক্স (মুছে ফেলা) উপাদানগুলি সরান।
let startIndex = 0,
deleteCount = 2;
a1.splice(startIndex, deleteCount);
পদ্ধতি 2) অ্যারের শেষে পছন্দসই সূচনা সূচকের পরে উপাদানগুলি সরান।
a1.splice(2);
ব্যবহার করে .splice()
, একটি লক্ষ্য হতে পারে a1
উপরের দুটি ফর্মের একটি ব্যবহার করে মাথা এবং লেজ অ্যারেগুলিতে বিভক্ত হওয়া।
পদ্ধতি # 1 ব্যবহার করে, ফেরতের মানটি মাথা এবং a1
লেজ হয়ে যাবে ।
let head = a1.splice(startIndex, deleteCount);
এখন, একের মধ্যে ঝাপটায় পড়ে মাথা, শরীর ( a2
) এবং লেজ কাটা করুন
[].concat(head, a2, a1);
সুতরাং, এই সমাধানটি এখনও পর্যন্ত উপস্থাপিত অন্য যে কোনও তুলনায় বাস্তব বিশ্বের মতো। আপনি কি লেগোসের সাথে এটি করবেন? ;-) এখানে একটি ফাংশন, পদ্ধতি # 2 ব্যবহার করে সম্পন্ন করা হয়েছে।
function insertArray(target, body, startIndex)
{
let tail = target.splice(startIndex);
return [].concat(target, body, tail);
}
let newArray = insertArray([1, 2, 3, 4], ["a", "b"], 2);
সংক্ষিপ্ত:
function insertArray(target, body, startIndex)
{
return [].concat(target, body, target.splice(startIndex));
}
নিরাপদ:
function insertArray(target, body, startIndex)
{
const ARRAY_START = 0,
ARRAY_END = target.length - 1,
ARRAY_NEG_END = -1,
START_INDEX_MAGNITUDE = Math.abs(startIndex);
if (startIndex === ARRAY_START) {
throw new Error("The value for startIndex cannot be zero (0).");
}
if (startIndex === ARRAY_END || startIndex === ARRAY_NEG_END) {
throw new Error("The startIndex cannot be equal to the last index in target, or -1.");
}
if (START_INDEX_MAGNITUDE >= ARRAY_END) {
throw new Error("The absolute value of startIndex must be less than the last index.");
}
return [].concat(target, body, target.splice(startIndex));
}
এই সমাধানের সুবিধার মধ্যে রয়েছে:
1) সমাধানের উপর একটি সাধারণ ভিত্তি প্রাধান্য দেয় - একটি খালি অ্যারে পূরণ করুন।
2) মাথা, শরীর এবং লেজের নামকরণ প্রাকৃতিক অনুভূত হয়।
3) ডাবল কল নেই .slice()
। মোটেও কাটছে না।
4) না .apply()
। অত্যন্ত অপ্রয়োজনীয়।
5) পদ্ধতি শৃঙ্খলা এড়ানো হয়।
6) ECMAScript 3 এবং 5 এ কেবল বা var
পরিবর্তে ব্যবহার করে কাজ করে ।let
const
**)) এটি নিশ্চিত করে যে শরীরে থাপ্পড় দেওয়ার জন্য একটি মাথা এবং লেজ থাকবে, অন্য অনেকগুলি সমাধান উপস্থাপনের বিপরীতে। আপনি যদি আগে বা পরে সীমা যুক্ত করেন তবে আপনার অন্তত ব্যবহার করা উচিত .concat()
!!!!
দ্রষ্টব্য: স্প্রেড ওপেনেটর ব্যবহার ...
এই সমস্ত কিছু সম্পাদন করা সহজ করে তোলে।