2013-11-26 5 views
17

लिए सबसे कारगर तरीका मनमाना लंबाई के एक शून्य भरा JavaScript श्रृंखला बनाने के लिए क्या है?कैसे एक शून्य भरा मनमाना लंबाई के JavaScript श्रृंखला बनाने के लिए?

+1

क्या कोई कारण है कि आप एक्स-लम्बाई के साथ एक्स-लम्बाई की एक सरणी के विपरीत शून्य-भरे हुए हैं, जिसे आसानी से 'नया ऐरे (एक्स)' घोषित किया जा सकता है, जहां 'x' 0 और 2^32 के बीच पूर्णांक है - 1. –

+0

मैंने एक बार एक बहुत ही समान प्रश्न पूछा, और मुझे कई अच्छे उत्तर मिल गए: http://stackoverflow.com/questions/17776149/is-there-a-more-concise-way-to-initialize-empty-multidimensional -arrays –

+3

संभव डुप्लिकेट [शून्य भरा जावास्क्रिप्ट सरणी बनाने के लिए सबसे प्रभावी तरीका?] (http://stackoverflow.com/questions/1295584/most- कुशल-way-to-create-a-zero-filled-javascript- सरणी) –

उत्तर

17

कैसे इस तरह की कोशिश कर के बारे में:

Array.apply(null, new Array(10)).map(Number.prototype.valueOf,0); 
//Output as [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

या

new Array(10+1).join('0').split('').map(parseFloat) 
//Output as [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

संपादित करें: -

यदि आपका सरणी तो बस डाल कि एक समारोह जो एक संख्या लेता में गतिशील है और उस चर से 10 को प्रतिस्थापित करें।

+0

मेरी सरणी लंबाई गतिशील – user2814799

+1

बस उस फ़ंक्शन में डाल दें जो उस संख्या में है और उस चर द्वारा 10 को प्रतिस्थापित करें! – Shryme

+0

@Shryme: - धन्यवाद। मैंने अपडेट किया है कि मेरे जवाब में भी! –

1

एक तरह से प्रत्यावर्तन इस्तेमाल कर सकते हैं।

function fillArray(l, a) { 
    a = a || []; 
    if (0 < l) { 
    l -= 1; 
    a[l] = 0; 
    return fillArray(l, a); 
    } 
    return a; 
} 

मैं भी एक और अधिक क्लासिक विकल्प था:

function fillArray(l) { 
    var a; 
    for (a = []; 0 < l; l-=1, a[l]=0); 
    return a; 
} 
6
function repeatArray(value, len){ 
    var A=[],i=0; 
    while (i<len) A[i++]= value; 
    return A; 
} 
15

डिफ़ॉल्ट Uint8Array, Uint16Array करके और Uint32Array कक्षाओं शून्य रखने के रूप में यह मान है, तो आप किसी भी जटिल भरने तकनीक की जरूरत नहीं है , बस:

var ary = new Uint8Array(10); 

सरणीके सभी तत्वडिफ़ॉल्ट रूप से शून्य हो जाएगा।

4

आप एक 9 लंबाई सरणी चाहते हैं:

Array.apply(null, {length: 9}).map(function() {return 0;}) 

आप एक एक्स-लंबाई सरणी चाहते हैं:

Array.apply(null, {length: X}).map(function() {return 0;}) 

आप एक सरणी है और अपने मूल्यों को फिर से लिखने करना चाहते हैं:

var arr=[54,53,6,7,88,76] 
arr=arr.map(function() {return 0;}) 

आप कुछ भी साथ सरणी आप चाहते हैं भर सकता है बस वापसी पर मान बदलकरअंदर समारोह अंदर .map:

Array.apply(null, {length: 9}).map(function() {return "a string";}) 
Array.apply(null, {length: 9}).map(function() {return Math.random();}) 
Array.apply(null, {length: 9}).map(function() {return NaN;}) 
Array.apply(null, {length: 9}).map(function() {return null;}) 
Array.apply(null, {length: 9}).map(function() {return true;}) 
Array.apply(null, {length: 9}).map(function() {return;}) 

पिछले एक अपरिभाषित

2

के साथ सरणी भर देगी मैं परीक्षण किया दोनों Unit8Array

[].slice.apply(new Uint8Array(n)); 

और शामिल होने/विभाजन विधि

new Array(n + 1).join('0').split('').map(parseFloat); 
दिलचस्प परिणामों के साथ jsPerf में

। क्रोम और फ़ायरफ़ॉक्स दोनों गिनती (48,000 और 76,000 संचालन के बीच) पर काफी धीमी थीं। लेकिन ओपेरा और सफारी दोनों ने Uint8Array फ़ंक्शन (438,000 ऑपरेशन तक) के साथ अद्भुत प्रदर्शन किया। मुझे लगता है कि मैं Uint8Array का उपयोग करना शुरू कर दूंगा और आशा करता हूं कि क्रोम और फ़ायरफ़ॉक्स में सुधार होगा।

9

न्यू ES6 सरणी एक्सटेंशन आप fill विधि के साथ मूल रूप से ऐसा करने की अनुमति।अब आईई एज, क्रोम और एफएफ इसका समर्थन करता है, लेकिन compatibility table

new Array(3).fill(0) आपको [0, 0, 0] देगा। आप सरणी को new Array(5).fill('abc') (यहां तक ​​कि वस्तुओं और अन्य सरणी) जैसे किसी भी मान से भर सकते हैं।

आप को भरने के साथ पिछले सरणियों संशोधित कर सकते हैं उस के शीर्ष पर:

arr = [1, 2, 3, 4, 5, 6] 
arr.fill(9, 3, 5) # what to fill, start, end 

जो आप देता है: [1, 2, 3, 9, 9, 6]

+0

स्पष्ट रूप से सबसे अच्छा और सबसे अर्थपूर्ण तरीका! – Casimir

3

जावास्क्रिप्ट ES6 में वहाँ एक बहुत ही आसान समाधान है। क्योंकि मैं इसे codegolf कोशिश कर रहा हूँ मैं यहाँ आया कम:

n = 999 // arbitrary length 
 
a = Array(n).fill(0) 
 

 
console.log(a)

0

इस बारे में क्या?

(new Array(123)).fill(0) 

यह बहुत आसान, सुरुचिपूर्ण है और आप किसी भी मूल्य के साथ सरणी भर सकते हैं।

संबंधित मुद्दे