2010-08-25 29 views
5

का पहला तत्व प्राप्त करें मेरे पास जावास्क्रिप्ट में ऑब्जेक्ट्स की एक सरणी है। मैं jquery का उपयोग करें।एक स्पैस जावास्क्रिप्ट सरणी

मैं सरणी में पहला तत्व कैसे प्राप्त करूं? मैं सरणी अनुक्रमणिका का उपयोग नहीं कर सकता - क्योंकि जब मैं सरणी में ऑब्जेक्ट जोड़ रहा हूं, तो मैं प्रत्येक तत्व अनुक्रमणिका को असाइन करता हूं। तो इंडेक्स 0, 1, 2 आदि नहीं हैं

बस सरणी का पहला तत्व प्राप्त करने की आवश्यकता है?

+1

क्या आप सरणी सूचकांक के रूप में प्रयोग कर रहे हैं? –

उत्तर

4

आप क्रमिक रूप से गिने तत्वों का उपयोग नहीं करते हैं, तो आप के माध्यम से जब तक आप पहले एक हिट पाश करना होगा:

var firstIndex = 0; 
while (firstIndex < myarray.length && myarray[firstIndex] === undefined) { 
    firstIndex++; 
} 
if (firstIndex < myarray.length) { 
    var firstElement = myarray[firstIndex]; 
} else { 
    // no elements. 
} 

या कुछ समतुल्य रूप मूर्खतापूर्ण निर्माण। यह आपको पहला आइटम सूचकांक प्राप्त करता है, जिसे आप इसके बारे में परवाह नहीं कर सकते हैं या नहीं।

यदि ऐसा कुछ है जो आपको अक्सर करने की ज़रूरत है, तो आपको वर्तमान पहले मान्य इंडेक्स के लिए एक लुकसाइड संदर्भ रखना चाहिए, इसलिए यह हर बार ओ (एन) के बजाय ओ (1) ऑपरेशन बन जाता है। यदि आपको अक्सर वास्तव में स्पैस सरणी के माध्यम से पुन: प्रयास करने की आवश्यकता होती है, तो एक और डेटा संरचना पर विचार करें, जैसे ऑब्जेक्ट को बैक-मैप्स अनुक्रमिक परिणाम, या आपके डेटा को फिट करने वाला कुछ।

+1

खाली सरणी के लिए देखें। – Douglas

+0

धन्यवाद, संपादित। –

+1

यह सबसे कम सूचकांक के आधार पर बहुत अक्षम हो सकता है। – Jasper

4

filter विधि स्पैर सरणी के साथ काम करती है।

var first = array.filter(x => true)[0]; 
+2

-1। गलत; यह सवाल का जवाब नहीं देता है। ओपी पहले "मान्य" आइटम चाहता है, जो भी सूचकांक है (आवश्यक रूप से शून्य नहीं)। 'शिफ्ट' केवल 'अपरिभाषित' सहित तत्व 0 पर जो भी है उसे खींच लेगा। –

+0

मेरी गलती, एक और जवाब जोड़ने के बजाय, एक विकल्प के लिए संपादित किया गया है जो दूसरों को गुमराह कर सकता है। –

+0

@GeorgeJempty शायद क्योंकि यह 'फ़िल्टर' का उपयोग करता है, इसलिए मुझे लगता है कि "पर्याप्त बंद करें", लेकिन आप सही हैं। मेरा संपादन बहुत कठोर था। – aleclarson

0

आप पाते हैं अपने आप को सरणियों के हेरफेर एक बहुत नहीं करना पड़ता हैं, तो आप Underscore पुस्तकालय में रुचि हो सकती। यह जोड़ तोड़ सरणियों के लिए उपयोगिता तरीके प्रदान उदाहरण compact के लिए:

var yourArray = []; 
yourArray[10] = "foo"; 
var firstValue = _.compact(yourArray)[0]; 

हालांकि, यह आपको कुछ अजीब कर रहे हैं की तरह है जब आप अपने सरणी का निर्माण कर रहे हैं ध्वनि करता है। शायद Array.push आपकी मदद करेगा?

2

आप पर विचार किया है:

function getFirstIndex(array){ 
    var result; 
    if(array instanceof Array){ 
     for(var i in array){ 
      result = i; 
      break; 
     } 
    } else { 
     return null; 
    } 
    return result; 
} 

?

और एक तरह से सरणी में पिछले तत्व प्राप्त करने के लिए के रूप में:

function getLastIndex(array){ 
    var result; 
    if(array instanceof Array){ 
      result = array.push(""); 
      array.pop; 
     } 
    } else { 
     return null; 
    } 
    return result; 
} 

इन उपयोगों jQuery का न तो।

2

Object.keys(array)[0] स्पैस सरणी में पहले तत्व के सूचकांक (String रूप में) देता है।

var array = []; 
array[2] = true; 
array[5] = undefined; 

var keys = Object.keys(array);   // => ["2", "5"] 
var first = Number(keys[0]);    // => 2 
var last = Number(keys[keys.length - 1]); // => 5 
0

मैं भी एक ऐसी ही समस्या का सामना करना पड़ रहा था और हैरान था कि कोई भी निम्नलिखित पर विचार किया है:

var testArray = []; 
testArray [1245]= 31; 
testArray[2045] = 45; 
for(index in testArray){ 
    console.log(index+','+testArray[index]) 
} 

ऊपर

1245,31 
2045,45 

का उत्पादन करेगा यदि आवश्यक हो तो आप के बाद मौजूद हो सकता है पहला पुनरावृत्ति यदि आवश्यक था तो आम तौर पर हमें पता होना चाहिए कि सरणी में कहां से शुरू करना है।

1

यह Array#some के साथ ईएस 5 विधि के साथ एक प्रस्ताव है।

कोड पहले nonsparse तत्व और सूचकांक मिलता है। यात्रा कॉलबैक में true लौटने के साथ तुरंत बंद हो जाता है:

var a = [, , 22, 33], 
 
    value, 
 
    index; 
 

 
a.some(function (v, i) { 
 
    value = v; 
 
    index = i; 
 
    return true; 
 
}); 
 

 
console.log(index, value);

-1

इस पुन: प्रयोज्य खुला स्रोत array-first component जो किसी दिए गए सरणी के पहले तत्व देता है का उपयोग कर सकते हैं।

उदाहरण:

first([1, 2, 3]) // => 1 
first(['a', 'b', 'c']) // => 'a' 
+0

वे एक ** स्पैस ** सरणी के बारे में पूछ रहे हैं, सामान्य सरणी नहीं। – aleclarson

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