सरणी का पहला तत्व कैसे प्राप्त करें?


236

आप इस तरह से एक सरणी से पहला तत्व कैसे प्राप्त करते हैं:

var ary = ['first', 'second', 'third', 'fourth', 'fifth'];

मैंने यह कोशिश की:

alert($(ary).first());

लेकिन यह वापस आ जाएगी [object Object]। इसलिए मुझे सरणी से पहला तत्व प्राप्त करने की आवश्यकता है जो तत्व होना चाहिए 'first'


2
मैं दृढ़ता से जवाब देने की सलाह देता हूं सक्रिय
leonheess

जवाबों:


338

इस तरह

alert(ary[0])

35
var a = []; a[7] = 'foo'; alert(a[0]);
पेटा

72
यह मानता है कि सरणी में पहला तत्व हमेशा 0. का सूचकांक होता है। आप जानते हैं कि वे धारणा के बारे में क्या कहते हैं ...
एंडी

16
@ और कोई धारणा नहीं थी, क्योंकि ओपी का प्रश्न काफी स्पष्ट और विशिष्ट था।
जॉन हार्टसॉक

5
@Petah उस कोड में कुछ भी गलत नहीं है। यह केवल अपरिभाषित दिखाता है, क्योंकि यह एक [0] का मूल्य है, जो वास्तव में सरणी में पहला आइटम है। यदि आप इसे फू दिखाना चाहते हैं तो आपको सभी अपरिभाषित मूल्यों को छोड़ देना चाहिए, लेकिन यह सरणी में पहला आइटम नहीं होगा।
मिकिएल वैन डेर ब्लोंक

5
@MichielvanderBlonk मैं बस एक किनारे के मामले की ओर इशारा कर रहा था, जो कुछ उपयोगकर्ता उम्मीद नहीं कर सकते हैं।
पेटा

202

आप jQuery-if-a vanilla जावास्क्रिप्ट सरणी क्यों बना रहे हैं? मानक जावास्क्रिप्ट का उपयोग करें!

var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
alert(ary[0]);

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array

इसके अलावा, अधिक jQuery की जरूरत है

स्रोत , बोबिसन के सौजन्य से


1
इस जवाब का संदर्भ लें कि यह समाधान हमेशा काम क्यों नहीं करता है।
गुस्तावो स्ट्राबे

92

विभिन्न परिस्थितियों के लिए नीचे दिए गए कुछ तरीके।

अधिकांश सामान्य मामलों में, पहले तत्व तक पहुंचने का सबसे सरल तरीका है

yourArray[0]

लेकिन इसके लिए आपको यह जाँचना होगा कि क्या वास्तव में मौजूद है।

वास्तविक दुनिया के मामले हैं जहां आप मूल सरणी के बारे में परवाह नहीं करते हैं, और यह जांचना नहीं चाहते हैं कि क्या सूचकांक मौजूद है, आप केवल पहला तत्व या अपरिभाषित इनलाइन प्राप्त करना चाहते हैं।

इस मामले में, आप पहले तत्व को प्राप्त करने के लिए शिफ्ट () विधि का उपयोग कर सकते हैं , लेकिन सतर्क रहें कि यह विधि मूल सरणी को संशोधित करती है (पहले आइटम को हटाती है और वापस लौटाती है)। इसलिए एक सरणी की लंबाई एक से कम हो जाती है। इस पद्धति का उपयोग इनलाइन मामलों में किया जा सकता है, जहां आपको पहले तत्व प्राप्त करने की आवश्यकता होती है, लेकिन आप मूल सरणी की परवाह नहीं करते हैं।

yourArray.shift()

यह जानना महत्वपूर्ण है कि ऊपर दिए गए दो विकल्प केवल एक विकल्प हैं यदि आपका सरणी [0] सूचकांक से शुरू होता है।

ऐसे मामले हैं जहां पहला तत्व हटा दिया गया है, उदाहरण के लिए, अपने एरे को हटाएं [0] अपने सरणी को "छेद" से छोड़ दें। अब [0] तत्व केवल अपरिभाषित है, लेकिन आप पहले "मौजूदा" तत्व प्राप्त करना चाहते हैं। मैंने इसके कई वास्तविक मामले देखे हैं।

इसलिए, यह मानते हुए कि हमें सरणी और पहली कुंजी का कोई ज्ञान नहीं है (या हमें पता है कि छेद हैं), हम अभी भी पहला तत्व प्राप्त कर सकते हैं।

आप पहला तत्व प्राप्त करने के लिए खोज () का उपयोग कर सकते हैं ।

खोज का लाभ () इसकी दक्षता है क्योंकि यह लूप से बाहर निकलता है जब स्थिति को पूरा करने वाले पहले मूल्य को पूरा किया जाता है (नीचे इसके बारे में अधिक)। (आप अशक्त या अन्य खाली मानों को भी छोड़ने के लिए शर्त को अनुकूलित कर सकते हैं)

var firstItem = yourArray.find(x=>x!==undefined);

मैं फ़िल्टर को भी शामिल करना चाहूँगा () पहले सरणी को प्रतिलिपि में "ठीक" करने के विकल्प के रूप में और फिर मूल सरणी को अक्षुण्ण रखते हुए पहला तत्व प्राप्त करूँगा (अनमॉडिफ़ाइड)।

फ़िल्टर को शामिल करने का एक अन्य कारण () यह है कि यह खोजने से पहले अस्तित्व में था () और कई प्रोग्रामर पहले से ही इसका उपयोग कर रहे हैं (यह ईएस 5 है खोज के खिलाफ) ES6 है।

var firstItem = yourArray.filter(x => typeof x!==undefined).shift();

चेतावनी कि फ़िल्टर () वास्तव में एक कुशल तरीका नहीं है (फ़िल्टर) सभी तत्वों से चलता है) और एक और सरणी बनाता है। छोटे सरणियों पर उपयोग करना ठीक है, क्योंकि प्रदर्शन प्रभाव सीमांत होगा, उदाहरण के लिए forEach का उपयोग करने के करीब।

(मुझे लगता है कि कुछ लोग पहले तत्व को प्राप्त करने के लिए ... लूप में उपयोग करने का सुझाव देते हैं, लेकिन मैं इस विधि के खिलाफ सिफारिश करूंगा ... का उपयोग किसी ऐरे से अधिक करने के लिए नहीं किया जाना चाहिए जहां सूचकांक आदेश महत्वपूर्ण है क्योंकि यह नहीं है ' t आदेश की गारंटी दें, हालांकि आप तर्क दे सकते हैं कि ब्राउज़र अधिकतर आदेश का सम्मान करते हैं। वैसे भी, इस मुद्दे को हल नहीं करना चाहिए क्योंकि कई सुझाव देते हैं क्योंकि आप इसे नहीं तोड़ सकते हैं और यह सभी तत्वों के माध्यम से चलेगा। आप के लिए एक सरल का उपयोग करना बेहतर होगा। लूप और कुंजी / मान की जाँच करके

दोनों पाते हैं () और फ़िल्टर () तत्वों के क्रम की गारंटी देते हैं, इसलिए ऊपर के रूप में उपयोग करने के लिए सुरक्षित हैं।


1
न केवल बाद में सरणी को कैसे हटाएं, उदाहरण के लिए: var तत्व = yourArray.shift (); yourArray.unshift (तत्व);
ग्रेग

9
क्योंकि यह बहुत अक्षम और बुरी चीज है। आप पहले तत्व को बहुत कुशल तरीके से प्राप्त कर सकते हैं। शिफ्ट और अनशिफ्ट दोनों कुछ जाँच करते हैं और कार्य को प्राप्त करने के लिए पूरे ऐरे को पार करते हैं क्योंकि जब आप शुरुआत में एक नया तत्व निकालते हैं या जोड़ते हैं, तो अन्य सभी इंडेक्स को स्थानांतरित किया जाना चाहिए। यह ऐसा है जैसे आपके पास लोगों से भरी एक बस है, और जब पीछे की सीट से कोई उतरना चाहता है, तो आप बस को सामने के दरवाजे से खाली करते हैं और फिर उन्हें फिर से चलने के लिए कहते हैं।
सेले जुएल

1
@Selay जो दुभाषिया के विशिष्ट आंतरिक पर निर्भर करता है।
मिचेल वैन डेर ब्लोंक

@ मिचेल वैन डेर ब्लोंक क्या आप कृपया मुझे बता सकते हैं कि आपके द्वारा बताए अनुसार कौन सा दुभाषिया ऐसा करता है। मैं बहुत इच्छुक हूँ। मेरे द्वारा ज्ञात सभी कार्यान्वयन लूप और कॉपी का उपयोग करते हैं। यह कैसे जावास्क्रिप्ट सरणियों काम करते हैं। आप पहले तत्व को आसानी से नहीं निकाल सकते क्योंकि शेष सरणी अब 1 से शुरू होती है (तत्व 0 स्थिति पर), जिसे आपको ठीक करने की आवश्यकता है। आप जादू को कोई फर्क नहीं पड़ता कि आपके पास क्या आंतरिक कार्यान्वयन है।
सेले

यदि आप इसका उपयोग yourArray.map(n=>n).shift()करते हैं तो यह मूल को संशोधित किए बिना पहला आइटम लौटाएगा ... नहीं जानता कि क्या यह सबसे अच्छा तरीका है लेकिन अगर आप .map () (फ़िल्टर) () (कुछ) () शिफ्ट () के साथ एक सरणी की श्रृंखला बनाते हैं। .. नहीं तो मैं उपयोग yourArray[0]
करूँगा

53

यदि पहला तत्व हटा दिया गया है, तो अनुक्रमणिका 0 का तत्व मौजूद नहीं हो सकता है:

let a = ['a', 'b', 'c'];
delete a[0];

for (let i in a) {
  console.log(i + ' ' + a[i]);
}

JQuery के बिना पहला तत्व प्राप्त करने का बेहतर तरीका:

function first(p) {
  for (let i in p) return p[i];
}

console.log( first(['a', 'b', 'c']) );


1
a.entries () [0] इसे करना चाहिए :)
एडसन मदीना

1
ऐसा इसलिए है क्योंकि आपको किसी सरणी के साथ गणना के लिए उस तरह का उपयोग नहीं करना चाहिए, क्योंकि यह ऑब्जेक्ट्स को एन्यूमरेट कर रहा है और सरणी सदस्यों को नहीं। लूप के बजाय पारंपरिक के साथ अनुक्रमण का उपयोग करें।
Oskar Duveborn

इसी तरह का ES6 दृष्टिकोण (सांख्यिक सूचकांकों पर भी निर्भर नहीं): stackoverflow.com/a/56115413/7910454
leonheess

51

ES6 विनाशकारी का उपयोग करना

let [first] = [1,2,3];

जो जैसा है वैसा ही है

let first = [1,2,3][0];

यह जोड़ना प्रासंगिक हो सकता है कि यदि आपका ऐरे [0] इंडेक्स से शुरू होता है तो डिस्ट्रक्टिंग केवल एक विकल्प है।
leonheess

46

यदि आप पठनीयता को संरक्षित करना चाहते हैं तो आप हमेशा एक पहला कार्य जोड़ सकते हैं Array.protoype:

Array.prototype.first = function () {
    return this[0];
};

तब आप आसानी से पहला तत्व प्राप्त कर सकते हैं:

[1, 2, 3].first();
> 1

14
एक अच्छे कारण के लिए किसी भी तरह से आधार वर्गों के प्रोटोटाइप के साथ छेड़छाड़ करना एक बहुत बुरा अभ्यास माना जाता है।
दिमित्री मतवेव

11
यह मूर्खतापूर्ण है, टाइपिंग करने से .first()बेहतर कैसे है [0]?
jonschlinkert

10
@jonschlinkert कुछ भाषाओं में सूचकांक हैं जो शुरू होते हैं 1firstउस मामले में असंदिग्ध है।
बार्टेक बैनविचविच

6
क्या []। प्यास () वापसी?
रयूस

1
मेरे परीक्षण में यह अपरिभाषित है। मैं यह तय करने की कोशिश कर रहा हूं कि क्या मैं इसे अपरिभाषित लौटाता हूं।
19

33

आप बस उपयोग कर सकते हैं find():

let first = array.find(Boolean);

या यदि आप पहला तत्व चाहते हैं, भले ही वह मिथ्या हो :

let first = array.find(e => true);

अतिरिक्त मील जा रहा है:

यदि आप पठनीयता की परवाह करते हैं, लेकिन संख्यात्मक घटनाओं पर भरोसा नहीं करना चाहते हैं, तो आप इसे परिभाषित करके एक- first()जुड़ाव जोड़ सकते हैं Array.protoype, Object​.define​Property()जिसके साथ अंतर्निहित ऐरे ऑब्जेक्ट प्रोटोटाइप को सीधे संशोधित करने ( यहां समझाया गया है ) के नुकसान को कम करता है ।

प्रदर्शन बहुत अच्छा है ( find()पहले तत्व के बाद रुक जाता है) लेकिन यह सही या सार्वभौमिक रूप से सुलभ नहीं है (केवल ईएस 6)। अधिक पृष्ठभूमि के लिए पढ़ें @ उत्तर का जवाब

Object.defineProperty(Array.prototype, 'first', {
  value() {
    return this.find(e => true);     // or this.find(Boolean)
  }
});

फिर आप कर सकते हैं पहला तत्व प्राप्त करने के लिए:

let array = ['a', 'b', 'c'];
array.first();

> 'a'

इसे कार्रवाई में देखने के लिए स्निपेट:

Object.defineProperty(Array.prototype, 'first', {
  value() {
    return this.find(Boolean);
  }
});

console.log( ['a', 'b', 'c'].first() );


3
यह सबसे अच्छा और सबसे अद्यतित उत्तर है। मैं यहाँ वही पोस्ट करने वाला था, लेकिन मैंने आपके :) के देखने के बाद
Kostanos

और क्या होगा यदि भाषा के भविष्य के संस्करण में वे जोड़ेंगे ()? :-) उपरोक्त स्निपेट इसे नहीं तोड़ेंगे?
बोगदान

@ बोगदान जबfind() आप जोड़ेंगे तो आपका क्या मतलब है ? find()लंबे समय से भाषा का हिस्सा है। यही कारण है कि उपरोक्त स्निपेट काम करता है।
सिंहपर्णी

ओह। क्षमा करें, थके हुए लोग बहुत पहले नहीं सोए थे।
बोगदान

@Bogdan यह अभी भी पूरी तरह से ठीक काम करेगा, लेकिन first()भाषा के संभावित भविष्य को खत्म कर देगा
leonheess

18

यदि आपका सरणी इंडेक्स शून्य से आबाद होने की गारंटी नहीं है, तो आप उपयोग कर सकते हैं Array.prototype.find():

var elements = []
elements[1] = 'foo'
elements[2] = 'bar'

var first = function(element) { return !!element }    
var gotcha = elements.find(first)

console.log(a[0]) // undefined
console.log(gotcha) // 'foo'

3
यह वास्तव में उच्च मतदान किया जाना चाहिए। यह सबसे संक्षिप्त समाधान है जो मैं देखता हूं कि वैनिला जेएस और विरल सरणियों का उपयोग करता है।
डोमिनिक पी

IE11 में काम नहीं करेंगे: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Corey Alix

1
मैं !!elementइसका उपयोग करने के खिलाफ सलाह दूंगा क्योंकि यह झूठे मूल्यों को छोड़ देगा। मैं find()इस तरीके का उपयोग करने की सलाह sparse.find((_, index, array) => index in array);
विक्टर वेलिंग

यहां बिना
झूठे

13
array.find(e => !!e);  // return the first element 

चूंकि "ढूंढें" फ़िल्टर और& से मेल खाने वाले पहले तत्व को वापस करते हैं !!e किसी भी तत्व से मेल खाता है।

नोट यह केवल काम करता है जब पहला तत्व एक "Falsy" नहीं है: null, false, NaN, "", 0,undefined


1
अब्देनूर दूसरों के लिए स्पष्ट करने के लिए आपकी स्थिति किसी भी सत्य तत्व से मेल खाती है, अर्थात <code> const example = [null, NaN, 0, अनिर्धारित, {}, 3, 'a']; const firstTruthyElement = example.find (ई => !! ई); // 5 वां तत्व प्रदान करता है, पहला गैर मिथ्या: {} </ code>
PDA

@PDA को पकड़ने के लिए धन्यवाद। BTW, खाली स्ट्रिंग को भी
गलत

3
यह बढ़िया है और टाइपस्क्रिप्ट में भी बढ़िया काम करता है। सरलीकृत करने के बारे में क्या array.find(() => true);? इससे आप भी कर सकते हैं [false].find(() => true)
साइमन वार्टा

@SimonWarta बेशक .find(value => true)उम्मीद के मुताबिक काम कर रहा है ... लेकिन ईमानदारी से अगर आप एक क्लीनर कोड चाहते हैं और टाइपस्क्रिप्ट में टाइपिंग को बनाए रखने के लिए, विनाशकारी का उपयोग करें ।
फ्लेविन वोलेन




7

मुझे पता है कि जो लोग अन्य भाषाओं से जावास्क्रिप्ट पर आते हैं, जैसे कुछ की तलाश में head()याfirst() किसी सरणी का पहला तत्व प्राप्त करते हैं, लेकिन आप ऐसा कैसे कर सकते हैं?

आप नीचे दिए गए सरणी की कल्पना करें:

const arr = [1, 2, 3, 4, 5];

जावास्क्रिप्ट में, आप बस कर सकते हैं:

const first = arr[0];

या एक नया तरीका, नया तरीका है:

const [first] = arr;

लेकिन आप भी बस एक समारोह की तरह लिख सकते हैं ...

function first(arr) {
   if(!Array.isArray(arr)) return;
   return arr[0];
}

यदि अंडरस्कोर का उपयोग कर रहे हैं, तो उसी कार्य को करने की सूची है जिसे आप खोज रहे हैं:

_.first 

_.head

_.take

6

विधि जो सरणियों के साथ काम करती है , और यह वस्तुओं के साथ भी काम करती है (सावधान रहें, वस्तुओं के पास एक गारंटीकृत आदेश नहीं है!)।

मैं इस विधि को सबसे अधिक पसंद करता हूं, क्योंकि मूल सरणी को संशोधित नहीं किया गया है।

// In case of array
var arr = [];
arr[3] = 'first';
arr[7] = 'last';
var firstElement;
for(var i in arr){
    firstElement = arr[i];
    break;
}
console.log(firstElement);  // "first"

// In case of object
var obj = {
    first: 'first',
    last: 'last',
};

var firstElement;

for(var i in obj){
    firstElement = obj[i];
    break;
}

console.log(firstElement) // First;

5

ES2015 और इसके बाद के संस्करण में, विनाशकारी सरणी का उपयोग करके:

const arr = [42, 555, 666, 777]
const [first] = arr
console.log(first)


इसका एक ही जवाब है stackoverflow.com/a/48761812/7910454 लेकिन कुछ महीने बाद
leonheess

4

उन लोगों के लिए एक और जो केवल सत्य तत्वों से संबंधित हैं

ary.find(Boolean);

4

फ़िल्टर का उपयोग करके सरणी में पहला तत्व खोजें:

टाइपस्क्रिप्ट में:

function first<T>(arr: T[], filter: (v: T) => boolean): T {
    let result: T;
    return arr.some(v => { result = v; return filter(v); }) ? result : undefined;
}

सादे जावास्क्रिप्ट में:

function first(arr, filter) {
    var result;
    return arr.some(function (v) { result = v; return filter(v); }) ? result : undefined;
}

और इसी तरह, indexOf:

टाइपस्क्रिप्ट में:

function indexOf<T>(arr: T[], filter: (v: T) => boolean): number {
    let result: number;
    return arr.some((v, i) => { result = i; return filter(v); }) ? result : undefined;
}

सादे जावास्क्रिप्ट में:

function indexOf(arr, filter) {
    var result;
    return arr.some(function (v, i) { result = i; return filter(v); }) ? result : undefined;
}

3

जब कई मैच होते हैं, तो JQuery का .first () पहला DOM तत्व लाने के लिए प्रयोग किया जाता है जो jquery को दिए गए css चयनकर्ता से मेल खाता है।

आपको जावास्क्रिप्ट सरणियों में हेरफेर करने के लिए jQuery की आवश्यकता नहीं है।


3

क्यों नहीं समय के लिए अपने सरणी खाली हो सकता है?

var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
first = (array) => array.length ? array[0] : 'no items';
first(ary)
// output: first

var ary = [];
first(ary)
// output: no items

3

महज प्रयोग करें ary.slice(0,1).pop();

में

var ary = ['first', 'second', 'third', 'fourth', 'fifth'];

console.log("1º "+ary.slice(0,1).pop());
console.log("2º "+ary.slice(0,2).pop());
console.log("3º "+ary.slice(0,3).pop());
console.log("4º "+ary.slice(0,4).pop());
console.log("5º "+ary.slice(0,5).pop());
console.log("Last "+ary.slice(-1).pop());

array.slice (प्रारंभ, समाप्ति) .pop ();


ऐसा क्यों और क्या नहीं ary[0]?
nathanfranke


1

जावास्क्रिप्ट में चरित्र को विभाजित करने के लिए इसका उपयोग करें।

var str = "boy, girl, dog, cat";
var arr = str.split(",");
var fst = arr.splice(0,1).join("");
var rest = arr.join(",");

1

पिछले उदाहरण अच्छी तरह से काम करते हैं जब सरणी सूचकांक शून्य पर शुरू होता है। थोमैक्स का जवाब शून्य पर शुरू होने वाले सूचकांक पर भरोसा नहीं करता था, लेकिन उस पर निर्भर Array.prototype.findथा जिस पर मेरी पहुंच नहीं थी। JQuery $ .each का उपयोग करते हुए निम्नलिखित समाधान ने मेरे मामले में अच्छा काम किया।

let haystack = {100: 'first', 150: 'second'},
    found = null;

$.each(haystack, function( index, value ) {
    found = value;  // Save the first array element for later.
    return false;  // Immediately stop the $.each loop after the first array element.
});

console.log(found); // Prints 'first'.

1

आप इसे आसानी से दर्ज करके कर सकते _.headहैं।

var arr = ['first', 'second', 'third', 'fourth', 'fifth'];
console.log(_.head(arr));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>


2
यह सचमुच करता है arr[0]के रूप में आप देख सकते हैं यहाँ जिसके कारण मैं दृढ़ता से इस तरह के एक छोटे से कार्य के लिए lodash की तरह एक विशाल लाइब्रेरी का उपयोग कर हतोत्साहित करते हैं।
1946

1

var ary = ['first', 'second', 'third', 'fourth', 'fifth'];
alert(Object.values(ary)[0]);


यह वेनिला JS है, कोई jQuery नहीं, कोई लिबास नहीं, कुछ भी नहीं है: .. P .. यह काम करेगा यदि सरणी इंडेक्स शून्य पर शुरू नहीं होता है, तो यह काम करेगा यदि दुनिया समाप्त नहीं हुई है ...
Merak Marey

0

@NicoLwk आपको ब्याह वाले तत्वों को हटा देना चाहिए, जिससे आपकी सरणी वापस आ जाएगी। इसलिए:

var a=['a','b','c'];
a.splice(0,1);
for(var i in a){console.log(i+' '+a[i]);}

2
यह उत्तर aboves (NicoLwks) उत्तर के लिए एक टिप्पणी है, और हटा दिया जाना चाहिए
लिनो

0

पहले सरणी तत्व को पाने के लिए एक प्रोटोटाइप घोषित करें :

Array.prototype.first = function () {
   return this[0];
};

फिर इसका उपयोग इस प्रकार करें:

var array = [0, 1, 2, 3];
var first = array.first();
var _first = [0, 1, 2, 3].first();

या केवल (:

first = array[0];

0

यदि आप किसी व्यू फ़ंक्शंस को सरणी के लिए चुन रहे हैं जैसे

array.map(i => i+1).filter(i => i > 3)

और इन कार्यों के बाद पहला तत्व चाहते हैं आप बस .shift()इसे जोड़ सकते हैं यह मूल को संशोधित नहीं करता है array, फिर यह एक अच्छा तरीका हैarray.map(i => i+1).filter(=> i > 3)[0]

यदि आप किसी सरणी का पहला तत्व चाहते हैं कि मूल को संशोधित किए बिना आप उपयोग कर सकते हैं array[0]या array.map(n=>n).shift()(बिना मानचित्र के आप मूल को संशोधित करेंगे। इस मामले में btw मैं ..[0]संस्करण का सुझाव दूंगा ।


0
var ary = ['first', 'second', 'third', 'fourth', 'fifth'];

console.log(Object.keys(ary)[0]);

कोई भी ऑब्जेक्ट सरणी ( req) बनाएं , फिर Object.keys(req)[0]ऑब्जेक्ट एरे में पहली कुंजी चुनें।


2
हालांकि यह कोड स्निपेट प्रश्न को हल कर सकता है, जिसमें स्पष्टीकरण सहित वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और उन लोगों को आपके कोड सुझाव के कारणों का पता नहीं चल सकता है।
दिमासन

0

@thomax का उत्तर बहुत अच्छा है, लेकिन अगर सरणी का पहला तत्व गलत या गलत-y (0, खाली स्ट्रिंग, आदि) है तो विफल हो जाएगा। अपरिभाषित के अलावा किसी भी चीज़ के लिए सही लौटना बेहतर है:

const arr = [];
arr[1] = '';
arr[2] = 'foo';

const first = arr.find((v) => { return (typeof v !== 'undefined'); });
console.log(first); // ''

-1

ES6 आसान:

let a = []
a[7] = 'A'
a[10] = 'B'

let firstValue = a.find(v => v)
let firstIndex = a.findIndex(v => v)

1
नहीं ... यह पहला परिभाषित मूल्य लौटाएगा। यदि पहले वाला शून्य, अपरिभाषित, झूठा, 0 या एक खाली स्ट्रिंग है, तो उसे छोड़ दिया जाएगा। कोशिश करें:[false, 0, null, undefined, '', 'last'].find(v => v)
फ्लेविन वोलेन

अच्छा बिंदु, मेरा समाधान परिभाषित मूल्यों के साथ केवल सरणी के लिए काम करता है।
जन जारिक

1
फिर मूल्य का उपयोग करके फ़िल्टर क्यों करें? a.find(value => true)किसी भी मूल्य को खारिज नहीं करेंगे। फिर भी, मैं पहली वस्तु प्राप्त करने के लिए खोज का उपयोग करने की अनुशंसा नहीं करता हूं।
फ्लेविन वोलेन

1
@ MiXT4PE वापस लौट रहा है (जैसा कि आपके उत्तर में है) ठीक है क्योंकि यह पहले तत्व पर रुक जाएगा, यहाँ यह तत्व खुद को लौटाता है ... जो जारी रहेगा यदि वह गलत माना जाता है
फ़्लेवियन Volken

1
"मिक्स" का उपयोग करके @ MiXT4PE धीमा, अधिक जटिल और कम सुरुचिपूर्ण है। मुझे यह भी संदेह है कि कोई भी स्मार्ट संपादक इस ऑपरेशन को रिफलेक्टर करने में सक्षम है। विनाशकारी का उपयोग करना बहुत अधिक कुशल है, जिसे भाषा द्वारा समझा जाता है (इसलिए आप रिफ्लेक्टर कर सकते हैं), प्रकार को कंपाइलर (टीएस के मामले में) द्वारा समझा जाता है, और सबसे तेजी से समाधान की संभावना है।
फ्लेविन वोलेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.