2013-06-21 14 views
17

में संख्यात्मक सूचकांक की जांच कर रहा है I संख्यात्मक सूचकांक द्वारा एकत्रित जेसन डेटा प्राप्त कर रहा हूं। जब मेरे फॉलोअप में Im, उदाहरण के लिए, इंडेक्स 1 से शुरू हो सकता है, जिसका मतलब है कि मेरे फॉलोऑप में एक त्रुटि होगी क्योंकि 0 मौजूद नहीं है। मैं जावास्क्रिप्ट सरणी में एक संख्यात्मक अनुक्रमणिका मौजूद है या नहीं?एक जावास्क्रिप्ट सरणी

+0

इस json डेटा – Musa

+1

कैसे एक सूचकांक * * एक सरणी में नहीं रह सकता का एक उदाहरण देखते हैं? आपका क्या मतलब है कि यह मान 'अपरिभाषित' है, है ना? – acdcjunior

+1

कृपया एक उदाहरण पोस्ट करें। प्रश्नों में समस्याओं का विवरण अक्सर ठोस उदाहरणों के उत्तर देने में मुश्किल होता है। – CodeMonkeyKing

उत्तर

27
var a = [1, 2, 3], 
    index = 2; 

if (a[index] !== void 0) { /* void 0 === undefined 
           * See concern about ``undefined'' below. */ 
    /* index doesn't point to an undefined item. */ 
} 
+1

या 'अगर (एक में सूचकांक) तकनीकी रूप से अस्तित्व के लिए जांच करेगा, हालांकि आपकी'! == अपरिभाषित 'चेक सबसे अधिक संभावना होगी। –

+0

टाइप करें [इंडेक्स]! == 'अपरिभाषित' अधिक सुरक्षित होना चाहिए – Aubin

+3

@ औबिन क्यों? यदि 'ए' परिभाषित नहीं किया गया है तो यह '[index]' तक पहुंचने का प्रयास करते समय बुरी तरह विफल हो जाएगा। – andlrc

6

आप का उपयोग करने के लिए सक्षम होना चाहिए for(key in data)

var data = []; 
data[1] = 'a'; 
data[3] = 'b'; 

for(var index in data) { 
    console.log(index+":"+data[index]); 
} 
//Output: 
// 1-a 
// 3-b 

कौन सा होगा अगर अनुक्रमित सन्निहित नहीं हैं डेटा में प्रत्येक कुंजी आइटम पर पाश।

0

यदि आप वास्तव में वर्णन कर रहे हैं एक Array से एक Object बल्कि है, लेकिन तथ्य यह है कि यह गुण है कि uint32_t की हैं, लेकिन आवश्यक length संपत्ति वर्तमान नहीं है है कि में की तरह सरणी है। फिर आप इसे इस तरह एक असली सरणी में बदल सकते हैं। ब्राउज़र संगतता बुद्धिमान इस hasOwnProperty

के समर्थन जावास्क्रिप्ट

function toArray(arrayLike) { 
    var array = [], 
     i; 

    for (i in arrayLike) { 
     if (Object.prototype.hasOwnProperty.call(arrayLike, i) && i >= 0 && i <= 4294967295 && parseInt(i) === +i) { 
      array[i] = arrayLike[i]; 
     } 
    } 

    return array; 
} 

var object = { 
    1: "a", 
    30: "b", 
    50: "c", 
}, 
array = toArray(object); 

console.log(array); 

आउटपुट

[1: "a", 30: "b", 50: "c"] `

पर jsfiddle

ठीक है, अब आप एक कम आबादी वाले सरणी की आवश्यकता है और करना चाहते हैं कुछ करने के लिए for पाश का उपयोग करें।

जावास्क्रिप्ट

var array = [], 
    length, 
    i; 

array[1] = "a"; 
array[30] = "b"; 
array[50] = "c"; 

length = array.length; 
for (i = 0; i < length; i += 1) { 
    if (Object.prototype.hasOwnProperty.call(array, i)) { 
     console.log(i, array[i]); 
    } 
} 

ouput

1 "a" 
30 "b" 
50 "c" 

पर jsfiddle

वैकल्पिक रूप से, आप Array.prototype.forEach MDN पेज पर दिए गए के रूप में आपके ब्राउज़र यह, या उपलब्ध शिम का समर्थन करता है, तो उपयोग कर सकते हैं कि मैं लिंक, या es5_shim

जावास्क्रिप्ट

var array = []; 

array[1] = "a"; 
array[30] = "b"; 
array[50] = "c"; 

array.forEach(function (element, index) { 
    console.log(index, element); 
}); 

आउटपुट

1 "a" 
30 "b" 
50 "c" 

पर jsfiddle

+0

नीचे वोट की व्याख्या करने के लिए कार? – Xotic750

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