javascript - प्रसार सिंटैक्स सरणी ब्याह को कैसे प्रभावित करता है




arrays spread-syntax (4)

अन्य सभी उत्तर सही ढंग से doc विधि का वर्णन करते हैं और ऑपरेटर व्यवहार का प्रसार करते हैं, लेकिन परिणाम के बारे में आपकी गलतफहमी को ठीक करने की कोशिश कोई नहीं करता है।

आप वास्तव में जो देख रहे हैं, वह स्प्लिट विधि का रिटर्न वैल्यू है, जो कि एक एरे है जिसमें हटाए गए तत्व होते हैं , जो आपके दोनों तरीके से कॉल करते हैं। इसलिए आपको परिणाम के रूप में एक खाली सरणी मिलती है।

कॉलिंग विधि के व्यवहार को देखने के लिए, आपको प्रत्येक कॉल के बाद fruits सरणी को लॉग इन करना होगा (विधि का रिटर्न वैल्यू नहीं), जो आपके मामले में इतना उपयोगी नहीं है, क्योंकि fruits सरणी के बारे में आपकी अपेक्षाएं नहीं हैं दूसरी कॉल।

मुझे निम्नलिखित कोड मिला और मुझे नहीं पता कि A और B में क्या अंतर है:

var fruits = ["Banana", "Orange", "Apple", "Mango"];

fruits.splice(2,0,["Lemon", "Kiwi"]);

बी

fruits.splice(...[2,0].concat(["Lemon", "Kiwi"]));

var fruits = ["Banana", "Orange", "Apple", "Mango"];
var A = fruits.splice(2, 0, ["Lemon", "Kiwi"]);
var B = fruits.splice(...[2, 0].concat(["Lemon", "Kiwi"]));

console.log(A)
console.log(B)


एक वस्तु ["Lemon", "Kiwi"] को एक वस्तु के रूप में मानते हैं और इसे दिए गए सूचकांक में सम्मिलित करते हैं

["Banana", "Orange", ["Lemon", "Kiwi"], "Apple" , "Mango"];

बी कॉन्सर्ट [2,0] और ["Lemon", "Kiwi"] और फिर कॉमा से अलग किए गए तर्कों के रूप में उन्हें अलग करने के लिए पास करता है

fruits.splice(2,0,"Lemon", "Kiwi");  

जो नीचे की तरह सरणी को संशोधित करता है

["Banana", "Orange", "Lemon", "Kiwi", "Apple", "Mango"]

फ़ंक्शन हस्ताक्षर से doc अनुसार:

array.splice(start[, deleteCount[, item1[, item2[, ...]]]])

बी में:

fruits.splice(...[2,0].concat(["Lemon", "Kiwi"]));

क्योंकि [2,0].concat(["Lemon", "Kiwi"]) अर्थ है [2,0,"Lemon", "Kiwi"]

इसलिए fruits.splice(...[2,0,"Lemon", "Kiwi"]); fruits.splice(2,0,"Lemon", "Kiwi"); बन जाता है। fruits.splice(2,0,"Lemon", "Kiwi"); प्रसार ऑपरेटर ( ... ) का उपयोग करना।

उपरोक्त कोड आप कह रहे हैं कि "Lemon" , "Kiwi" , इंडेक्स 2 0 आइटम हटाएं।

इस स्थिति में 2 start इंडेक्स है, deleteCount 0 , और deleteCount 0 "Lemon" है, deleteCount 2 "Kiwi"

अब ए में:

fruits.splice(2,0,["Lemon", "Kiwi"]);

आप कह रहे हैं कि इंडेक्स 2 से 0 आइटमों को हटाने के साथ ["Lemon", "Kiwi"] जोड़ें। इस स्थिति में 2 इंडेक्स है, deleteCount 0 , और deleteCount 0 ["Lemon", "Kiwi"]


सबसे पहले आपको यह समझने की आवश्यकता है कि ब्याह कैसे काम करता है

array.splice (प्रारंभ [, DeleteCount [, item1 [, item2 [, ...]]]]]

यह शुरू होता है (शून्य से सूचकांक शुरू होता है), हटाए जाने वाले तत्वों की संख्या और बाकी किसी भी तर्क को उस शुरुआती सूचकांक में जोड़ा जाएगा।

अब आप ब्याह के साथ स्पष्ट हैं, इसलिए उन मूर्तियों की स्पष्ट समझ के लिए कदम से कदम मिलाकर चलें।

निम्नलिखित कथन

fruits.splice(...[2,0].concat(["Lemon", "Kiwi"])); 

सहमति के बाद बन जाता है

fruits.splice(...[2,0,"Lemon", "Kiwi"]);

फैलने के बाद यह बन जाता है

fruits.splice(2,0,"Lemon", "Kiwi");

फिर ब्याह अनुक्रमणिका 2 से फल लेगा और कुछ भी नहीं (शून्य के रूप में) को हटा देगा और बाकी तर्क जोड़ देगा। यानी, "नींबू" और "कीवी"।

तो आप ["Banana", "Orange", "Lemon", "Kiwi", "Apple", "Mango"]

जहाँ में

fruits.splice(2,0,["Lemon", "Kiwi"]);

ब्याह अनुक्रमणिका 2 से फल लेगा और कुछ भी नहीं (फिर से शून्य के रूप में) को हटा देगा और बाकी तर्क जोड़ देगा, अर्थात, "[" नींबू "," कीवी "]"

इसलिए आपको ["Banana", "Orange", ["Lemon", "Kiwi"], "Apple", "Mango"]

मुझे उम्मीद है यह मदद करेगा।






spread-syntax