इस प्रश्न के कुछ रचनात्मक उत्तर यहां दिए गए हैं। यहाँ उन लोगों के लिए एक सरल समाधान है, जो केवल सरणियों के साथ शुरू करते हैं। यदि वांछित हो, तो ECMAScript 3 के अनुरूप ब्राउज़रों के नीचे काम करने के लिए इसे बनाया जा सकता है।
शुरू करने से पहले ब्याह के बारे में कुछ जान लें।
मोज़िला डेवलपर नेटवर्क: Array.prototyp.splice ()
सबसे पहले, दो महत्वपूर्ण रूपों को समझें .splice()।
let a1 = [1,2,3,4],
a2 = [1,2];
विधि 1) वांछित सूचकांक से शुरू x (डिलीट) तत्वों को हटा दें।
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) ईसीएमएस्क्रिप्ट 3 और 5 में काम करता varहै letया केवल इसके बजाय का उपयोग करके const।
** 7) यह सुनिश्चित करता है कि प्रस्तुत किए गए कई अन्य समाधानों के विपरीत, शरीर को थप्पड़ मारने के लिए एक सिर और पूंछ होगी। यदि आप पहले या बाद में एक सरणी जोड़ रहे हैं, तो आपको कम से कम उपयोग करना चाहिए .concat()!!!!
नोट: प्रसार ओपियेटर का उपयोग ...यह पूरा करने के लिए बहुत आसान बनाता है।