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




arrays spread-syntax (6)

फ़ंक्शन हस्ताक्षर से 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"]

मुझे निम्नलिखित कोड मिला और मुझे नहीं पता कि 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"]

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

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"]

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


प्रसार का उपयोग किए बिना, बी है:

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

concat थोड़ा भ्रमित है, यह भी लिखा जा सकता है:

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

या:

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

सबसे पहले, कथन A और कथन B अलग-अलग परिणाम उत्पन्न करेंगे।

Statement A , आप 0 आइटम हटाते समय स्थिति 2 पर एक सरणी तत्व के रूप में एक सरणी ( ["Lemon", "Kiwi"] ) सम्मिलित कर रहे हैं। तो, आप स्थिति 2 पर एक और स्ट्रिंग सरणी में एक स्ट्रिंग सरणी सम्मिलित कर रहे हैं।

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


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

console.log(fruits);

हालाँकि , Statement B अधिक दिलचस्प है। इसे पूरी तरह से समझने के लिए, पहले लॉग आउट करें जैसे कि यह मुख्य भाग है:

console.log(...[2,0].concat(["Lemon", "Kiwi"]));  // basic array concatenation then spread

जैसा कि आप देख सकते हैं यह उत्पन्न करता है, 2 0 Lemon Kiwi । तब इसे fruits.splice(..here..) पैरामीटर के रूप में पास किया जाता है fruits.splice(..here..)array#splice अनुसार, यह 0 तत्वों को हटाते हुए स्थिति 2 पर दो तार (नींबू और कीवी) में प्रवेश करेगा।

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

fruits.splice(...[2,0].concat(["Lemon", "Kiwi"]));
// is same as fruits.splice(2, 0, 'Lemon', 'Kiwi')

console.log(fruits);

ध्यान दें:

  • array#splice मूल सरणी को अपडेट करता है
  • Statement A पेरेंट स्ट्रिंग ऐरे में एक array (IE ["Lemon", "Kiwi"] ) सम्मिलित करता है जबकि, Statement B पेरेंट स्ट्रिंग स्ट्रिंग में दो स्ट्रिंग्स (IE 'Lemon', 'Kiwi' ) सम्मिलित करता है।

क्यों न सिर्फ फिल्टर? मुझे लगता है कि यह जेएस में सरणी पर विचार करने का सबसे स्पष्ट तरीका है।

myArray = myArray.filter(function(item){
    return item.anProperty != whoShouldBeDeleted
});






javascript arrays spread-syntax