दिलचस्प पोस्ट
क्यों यह विभाजन पायथन में काम नहीं करता है? #ifdef सी # में DOM के बाद कॉलबैक Meteor.js में अद्यतन किया गया था कैसे System.out.println आउटपुट को रंग दें? एक कक्षा के गुण प्राप्त करना जावा में एक GUID बनाएँ मर्ज कमिट खोजें, जिसमें एक विशेष प्रतिबद्धता शामिल है UIImage गोल कोनों एक निर्दिष्ट आकार की सूचियों की सूची बनाने में परेशानी हो रही है यदि ("स्ट्रिंग") "स्ट्रिंग" को सही के रूप में मूल्यांकन करता है, लेकिन यदि ("string" == सच) नहीं करता है? एंड्रॉइड: कैसे ScrollView के अंदर एक दृश्य दिखाई दे रहा है? पायथन में फ़ंक्शन कॉल के निष्पादन समय को कैसे सीमित करें मैं जावास्क्रिप्ट के माध्यम से HTTP अनुरोध हेडर फ़ील्ड कैसे प्राप्त करूं? चहचहाना बूटस्ट्रैप को क्लिक करें सामग्री को टूलटिप बदलें घुमाए गए आयत को रेखांकित करने के लिए कैसे (2 डी में सेटपिक्सल द्वारा)

एक विशिष्ट सूचकांक में एक आइटम को कैसे सरणी में डालें?

मैं एक जावास्क्रिप्ट सरणी डालने पद्धति की शैली में देख रहा हूं:

arr.insert(index, item) 

अधिमानतः jQuery में, लेकिन किसी भी जावास्क्रिप्ट कार्यान्वयन इस बिंदु पर करेंगे।

वेब के समाधान से एकत्रित समाधान "एक विशिष्ट सूचकांक में एक आइटम को कैसे सरणी में डालें?"

आप क्या चाहते हैं मूल सरणी ऑब्जेक्ट पर splice समारोह है।

arr.splice(index, 0, item); निर्दिष्ट सूचकांक में item को arr में arr (पहले 0 आइटम हटाने से, यह है कि यह सिर्फ एक डालने वाला है)

इस उदाहरण में हम एक सरणी बनाते हैं और उसको एक तत्व जोड़ते हैं 2:

 var arr = []; arr[0] = "Jani"; arr[1] = "Hege"; arr[2] = "Stale"; arr[3] = "Kai Jim"; arr[4] = "Borge"; console.log(arr.join()); arr.splice(2, 0, "Lene"); console.log(arr.join()); 

उपरोक्त कोड का उत्पादन होगा:

 Jani,Hege,Stale,Kai Jim,Borge Jani,Hege,Lene,Stale,Kai Jim,Borge 

आप यह करकर Array.insert विधि को लागू कर सकते हैं:

 Array.prototype.insert = function ( index, item ) { this.splice( index, 0, item ); }; 

तो आप इसे इस तरह उपयोग कर सकते हैं:

 var arr = [ 'A', 'B', 'D', 'E' ]; arr.insert(2, 'C'); // => arr == [ 'A', 'B', 'C', 'D', 'E' ] 

कस्टम सरणी insert तरीकों

1. कई बहस और चेनिंग समर्थन के साथ

 /* Syntax: array.insert(index, value1, value2, ..., valueN) */ Array.prototype.insert = function(index) { this.splice.apply(this, [index, 0].concat( Array.prototype.slice.call(arguments, 1))); return this; }; 

यह कई तत्व सम्मिलित कर सकता है (के रूप में मूल splice करता है) और चेन का समर्थन करता है:

 ["a", "b", "c", "d"].insert(2, "X", "Y", "Z").slice(1, 6); // ["b", "X", "Y", "Z", "c"] 

2. सरणी-प्रकार के तर्कों के साथ विलय और समर्थन को समर्थन देना

 /* Syntax: array.insert(index, value1, value2, ..., valueN) */ Array.prototype.insert = function(index) { index = Math.min(index, this.length); arguments.length > 1 && this.splice.apply(this, [index, 0].concat([].pop.call(arguments))) && this.insert.apply(this, arguments); return this; }; 

यह सरणी से सरणी को दिए गए सरणी के साथ विलय कर सकता है और यह चेनिंग का समर्थन भी कर सकता है:

 ["a", "b", "c", "d"].insert(2, "V", ["W", "X", "Y"], "Z").join("-"); // "abVWXYZcd" 

डेमो: http://jsfiddle.net/UPphH/

यदि आप एक बार में कई तत्वों को एक बार में सम्मिलित करना चाहते हैं, तो इस स्टैक अतिप्रवाह उत्तर की जांच करें: जावा में एक सरणी में एक सरणी को बांटने का एक बेहतर तरीका

इसके अलावा यहां दो उदाहरणों को समझाते हैं:

 function insertAt(array, index) { var arrayToInsert = Array.prototype.splice.apply(arguments, [2]); return insertArrayAt(array, index, arrayToInsert); } function insertArrayAt(array, index, arrayToInsert) { Array.prototype.splice.apply(array, [index, 0].concat(arrayToInsert)); return array; } 

अंत में यहां एक जेएसफ़ाल्ड है ताकि आप इसे स्वयं देख सकें: http://jsfiddle.net/luisperezphd/Wc8aS/

और इस तरह आप फ़ंक्शन का उपयोग करते हैं:

 // if you want to insert specific values whether constants or variables: insertAt(arr, 1, "x", "y", "z"); // OR if you have an array: var arrToInsert = ["x", "y", "z"]; insertArrayAt(arr, 1, arrToInsert); 

जोड़ के अलावा, आप इस दृष्टिकोण का उपयोग कर सकते हैं जो मूल सरणी को बदल नहीं पाएंगे, लेकिन जोड़े गए आइटम के साथ एक नया सरणी बना देगा। आपको जब भी संभव हो तो उत्परिवर्तन से बचने चाहिए। मैं यहां ईएस 6 स्प्रेड ऑपरेटर का उपयोग कर रहा हूं।

 const items = [1, 2, 3, 4, 5] const insert = (arr, index, newItem) => [ // part of the array before the specified index ...arr.slice(0, index), // inserted item newItem, // part of the array after the specified index ...arr.slice(index) ] const result = insert(items, 1, 10) console.log(result) // [1, 10, 2, 3, 4, 5] 

उचित कार्यात्मक प्रोग्रामिंग और चेनिंग उद्देश्यों के लिए Array.prototype.insert() का एक आविष्कार आवश्यक है। दरअसल, यदि यह पूरी तरह से अर्थहीन खाली सरणी के बजाय उत्परिवर्तित सरणी को वापस कर दिया होता, तो यह सही हो सकता था। तो यहाँ यह जाता है

 Array.prototype.insert = function(i,...rest){ this.splice(i,0,...rest) return this } var a = [3,4,8,9]; document.write("<pre>" + JSON.stringify(a.insert(2,5,6,7)) + "</pre>"); 

इस:

 var arr= ["India","China","Japan","USA"]; arr.splice(index, 0, item); 

निर्दिष्ट index में आइटम को arr में arr (पहले 0 आइटम को हटाया जा रहा है, अर्थात, यह सिर्फ एक सम्मिलित है)।

हालांकि यह पहले से ही उत्तर दिया गया है, मैं एक वैकल्पिक दृष्टिकोण के लिए यह नोट जोड़ रहा हूं ..

मैं एक सरणी में एक ज्ञात संख्या को विशिष्ट पोस्टिशन में रखना चाहता था, क्योंकि वे "एसोसिएटेटिव सरणी" (यानी वस्तु) से निकलते हैं, जो परिभाषा के अनुसार क्रमबद्ध क्रम में गारंटी नहीं देते हैं। मैं परिणामस्वरूप सरणी को वस्तुओं की एक सरणी के रूप में करना चाहता था, लेकिन सरणी में एक विशिष्ट क्रम में होने वाली वस्तुओं को एक सरणी उनके आदेश की गारंटी देता है। तो मैंने ऐसा किया ..

प्रथम स्रोत ऑब्जेक्ट, एक JSONB स्ट्रिंग PostgreSQL से लिया गया। मैं इसे प्रत्येक बच्चे के ऑब्जेक्ट में "ऑर्डर" प्रॉपर्टी से हल करना चाहता था

 var jsonb_str = '{"one": {"abbr": "", "order": 3}, "two": {"abbr": "", "order": 4}, "three": {"abbr": "", "order": 5}, "initialize": {"abbr": "init", "order": 1}, "start": {"abbr": "", "order": 2}}'; var jsonb_obj = JSON.parse(jsonb_str); 

चूंकि ऑब्जेक्ट में नोड्स की संख्या ज्ञात है, इसलिए मैं पहले निर्दिष्ट लंबाई के साथ एक सरणी बना रहा हूँ:

 var obj_length = Object.keys(jsonb_obj).length; var sorted_array = new Array(obj_length); 

और फिर ऑब्जेक्ट को पुनरावृत्त करें, वास्तव में कोई भी "सॉर्टिंग" होने के बिना सरणी में वांछित स्थानों में नव निर्मित अस्थायी वस्तुओं को रखकर

 for (var key of Object.keys(jsonb_obj)) { var tobj = {}; tobj[key] = jsonb_obj[key].abbr; var position = jsonb_obj[key].order - 1; sorted_array[position] = tobj; } console.dir(sorted_array); 

Array#reduce उपयोग के साथ एक और संभावित समाधान

 var arr = ["apple", "orange", "raspberry"], arr2 = [1, 2, 4]; function insert(arr, item, index) { arr = arr.reduce(function(s, a, i) { i == index ? s.push(item, a) : s.push(a); return s; }, []); console.log(arr); } insert(arr, "banana", 1); insert(arr2, 3, 2); 

मैंने यह कोशिश की और यह ठीक काम कर रहा है !!!!

 var initialArr = ["India","China","Japan","USA"]; initialArr.splice(index, 0, item); 

सूचकांक वह स्थिति है जहां आप तत्व डालें या हटाना चाहते हैं। 0 अर्थात दूसरे मापदंडों को परिभाषित करता है कि निकाले जाने वाले सूचकांक से तत्व की संख्या नई प्रविष्टियां हैं जो आप सरणी में करना चाहते हैं। यह एक या एक से अधिक हो सकता है

 initialArr.splice(2, 0, "Nigeria"); initialArr.splice(2, 0, "Australia","UK");