जावास्क्रिप्ट किसी दिए गए आकार की खाली सरणी बनाते हैं


99

जावास्क्रिप्ट में मैं किसी दिए गए आकार की खाली सरणी कैसे बनाऊंगा

Psuedo कोड:

X = 3;
createarray(myarray, X, "");

उत्पादन:

   myarray = ["","",""]

3
आप शायद Array.prototype.fill का उपयोग करेंगे
RobG


संबंधित पोस्ट यहाँ
आरबीटी

जवाबों:


71
var arr = new Array(5);
console.log(arr.length) // 5

15
ओपी ने पूछा in javascript how would I create an empty array of a given size। इससे उस समस्या का समाधान होता है।
मारीचैच

13
ओपी ने "खाली" का एक उदाहरण प्रदान किया है।
रोब

8
खैर यह सवाल का एक और विकल्प है। वे प्रदान किए गए किसी भी उत्तर को चुन सकते हैं, जो
स्टैकओवरफ्लो

250

1) नई सरणी बनाने के लिए, जिसे आप ओवररेट नहीं कर सकते, आप सरणी कंस्ट्रक्टर का उपयोग कर सकते हैं:

Array(100) या new Array(100)


2) आप नई सरणी बना सकते हैं, जिसे नीचे की तरह पुन : प्रसारित किया जा सकता है :

क) सभी जावास्क्रिप्ट संस्करण

  • Array.apply: Array.apply(null, Array(100))

बी) ईएस 6 जावास्क्रिप्ट संस्करण से

  • विनाशकारी ऑपरेटर: [...Array(100)]
  • Array.prototype.fill Array(100).fill(undefined)
  • Array.from Array.from({ length: 100 })

आप इन सरणियों को नीचे की तरह मैप कर सकते हैं।

  • Array(4).fill(null).map((u, i) => i) [०, १, २, ३]

  • [...Array(4)].map((u, i) => i) [०, १, २, ३]

  • Array.apply(null, Array(4)).map((u, i) => i) [०, १, २, ३]

  • Array.from({ length: 4 }).map((u, i) => i) [०, १, २, ३]


1
Array.prototype.fill (> = ES6) kangax.github.io/compat-table/es6/… ;
ptim

4
दिन का ज्ञान - जब आप भाग (ए) में उल्लेख करते हैं कि एक नया बनाया गया व्यूह रचनाकार सिंटैक्स का उपयोग करके भी पुनरावृत्त नहीं है। जावास्क्रिप्ट वास्तव में कई बार आश्चर्यचकित करता है।
आरबीटी

का आकार क्या है Array(10000)के साथ empty x 10000?
क्वर्टी

1
इसकी लंबाई 10000 है, आप इसे चेक कर सकते हैं console.log(Array(10000).length)लेकिन अगर आप चलाते हैं Array(10000).forEach((u, i) => console.log(i)), तो आपको कोई आउटपुट नहीं मिलेगा
stpoa

Array.apply('x', Array(10))वास्तव में है[undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]
पोलव

47

हम Array.from({length: 500})2017 से उपयोग करते हैं ।


@ gion_13: मैं देख रहा हूं कि मुझे वोट दिया जा रहा है और मेरा वोट डाउन हो रहा है। कारण?
7vujy0f0hy

1
@ 7vujy0f0hy मुझे नहीं पता कि आपको वोट क्यों मिले। मैंने आपको एक वोट दिया, हालांकि आपका समाधान इस एक की तुलना में थोड़ा कम सहज है।
gion_13

@ gion_13: यह पुष्टि करने के लिए धन्यवाद कि मेरे समाधान में कुछ भी गलत नहीं है:।
7vujy0f0hy

18

whileलूप का उपयोग करके देखें ,Array.prototype.push()

var myArray = [], X = 3;
while (myArray.length < X) {
  myArray.push("")
}

वैकल्पिक रूप से, का उपयोग कर Array.prototype.fill()

var myArray = Array(3).fill("");

1
.fill()एक सुंदर एक लाइनर समाधान है। धन्यवाद!
22

17

२०१ 201 और थेनफॉर्थ में हम [...Array(500)]उस अंत तक उपयोग करेंगे ।


2
भविष्य में!
लेवी

प्रफुल्लित करने वाला यह (और समान) सिर्फ की तुलना में 50% धीमा है (() => { let n = []; for(var i=0;i<500;i++){y.push("");} return n; })()
एलेक्स

समय से पहले अनुकूलन के गला, शायद आप लाखों तत्वों के साथ सरणियों का एक गुच्छा बनाने का इरादा कर रहे हैं, तो आप इस पर विचार करना चाह सकते हैं, लेकिन कुछ नैनोसेकंड, अधिकांश मामलों के लिए, यह पठनीयता हिट के लायक नहीं है। ।
JaredMcAteer

11

ES5 के रूप में (जब यह जवाब दिया गया था):

यदि आप undefinedतत्वों की एक खाली सरणी चाहते हैं, तो आप बस कर सकते हैं

var whatever = new Array(5);

यह आपको देगा

[undefined, undefined, undefined, undefined, undefined]

और फिर यदि आप चाहते हैं कि यह खाली तारों से भरा हो, तो आप कर सकते हैं

whatever.fill('');

जो आपको देगा

["", "", "", "", ""]

और यदि आप इसे एक पंक्ति में करना चाहते हैं:

var whatever = Array(5).fill('');

3
नया ऐरे (2) आपको [अपरिभाषित, अपरिभाषित] नहीं देता है। यह आपको एक एरे देता है जो कि चलने योग्य नहीं है।
JCF

ठीक। मुझे कुछ और नहीं समझ में आ रहा है। मैं एक नई सरणी बना रहा हूं new Array(2)और जो मुझे वापस मिलेगा वह [ <2 empty items> ]नहीं है [undefined, undefined].mapपूर्व के उपयोग से कोई प्रभाव नहीं पड़ता है। हालांकि, मैं एक for...ofलूप का उपयोग करके उस पर पुनरावृति कर सकता हूं । अगर मैं शाब्दिक अंकन का उपयोग करके एक नया सरणी बनाता हूं a = [undefined, undefined]तो मैं इस .mapपर उपयोग कर सकता हूं ।
जेसीएफ

2
@JCF ... के लिए इटेरेटर प्रोटोकॉल का उपयोग करता है, इसलिए यह forEach / मैप से भिन्न व्यवहार करता है।
इटरेटर्स ने

2
@ TomaszBłachut @JCF मतदाताओं के लिए, कृपया ध्यान रखें कि यह उत्तर 4 साल पहले दिया गया था - उस समय, यह उत्तर 100% मान्य था। ईएस 6 और ईएस 7 ने क्रमशः 2016 के मध्य और 2018 के मध्य तक ब्राउज़रों के लिए रोल आउट करना शुरू नहीं किया। इस उत्तर के समय, JS संस्करण ES5 रहा होगा। आप एक और सबूत है कि इस की जरूरत है है जिस तरह से ES5 काम किया, बस Chrome का पुराना उदाहरण ऊपर स्पिन - और रन - इस उत्तर के समय में, यह v48 हो गया होता Array(5)। आप निम्न उत्पादन देखेंगे: [undefined x 5]
jeffdill2

2
@ jeffdill2 उत्तर में नई जानकारी जोड़ना सबसे अच्छा है। टिप्पणियों को हमेशा पूरी तरह से पढ़ा नहीं जाता है।
बोअज़

4

यदि आप कुछ मूल्यों के साथ अनाम सरणी बनाना चाहते हैं तो आप इस वाक्यविन्यास का उपयोग कर सकते हैं।

var arr = new Array(50).fill().map((d,i)=>++i)
console.log(arr)


0

आप दोनों जावास्क्रिप्ट विधियों को दोहराने () और विभाजन () को एक साथ उपयोग कर सकते हैं।

" ".repeat(10).split(" ")

यह कोड एक एरी बनाएगा जिसमें 10 आइटम हैं और प्रत्येक आइटम खाली स्ट्रिंग है।

const items = " ".repeat(10).split(" ")

document.getElementById("context").innerHTML = items.map((item, index) => index)

console.log("items: ", items)
<pre id="context">

</pre>

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.