2017-01-03 7 views
23

के इंडेक्स फ़ंक्शन के बीच अंतर मैं दो फ़ंक्शन इंडेक्स के बीच अंतर के बीच उलझन में हूं और एक सरणी में अनुक्रमणिका ढूंढता हूं।indexOf के बीच अंतर और सरणी

प्रलेखन कहते हैं

findIndex - रिटर्न सरणी जहां विधेय सच है में पहला तत्व के सूचकांक, और अन्यथा -1।

और

indexOf - एक सरणी में किसी मान की पहली घटना के सूचकांक देता है।

+0

मुझे लगता है कि अंतर है, एक (एक तर्क के रूप में एक समारोह लेता है और अधिक परिष्कृत पाता सक्षम करने, जैसे कहते हैं कि तुम बजाय सिर्फ एक विशिष्ट स्ट्रिंग के साथ एक मूल्य की पहली आवृत्ति देख रहे थे पूरा मूल्य), कोई वह मूल्य लेता है जिसे आप ढूंढ रहे हैं। यह वास्तव में एक बुरा सवाल नहीं है। स्पष्टीकरण के बिना डाउनवोट डाउन-वोट योग्य होना चाहिए। –

+0

कभी-कभी भाषा विनिर्देश (यानी ईसीएमए -262) से शुरू करना सबसे अच्छा होता है और अन्य सामग्री के साथ अंतर को भरता है: [* Array.prototype.indexOf (searchElement \ [, इंडेक्स \] से) *] (http: // ecma- international.org/ecma-262/7.0/index.html#sec-array.prototype.indexof) बनाम [* Array.prototype.findIndex (predicate \ [, thisArg \]) *] (http: // ecma-international। org/ECMA-262/7.0/index.html # सेकंड-array.prototype.findindex)। – RobG

+0

धन्यवाद टिम और रॉब –

उत्तर

38

मुख्य अंतर यह है इन कार्यों के मापदंडों हैं:

  • Array.prototype.indexOf() पहले पैरामीटर के रूप में एक मूल्य की उम्मीद है। यह आदिम प्रकार के सरणी में सूचकांक को खोजने के लिए एक अच्छा विकल्प बनाता है।

  • Array.prototype.findIndex()कॉलबैक को पहले पैरामीटर के रूप में उम्मीद करता है। इसका उपयोग करें यदि आपको गैर-आदिम प्रकारों (उदा। ऑब्जेक्ट्स) के साथ सरणी में इंडेक्स की आवश्यकता है या आपकी खोज स्थिति केवल एक मान से अधिक जटिल है।

दोनों मामलों के उदाहरणों के लिए लिंक देखें।

6

FindIndex, उपयोगी है अगर आप पहले तत्व है कि आपके विधेय के लिए मिलान प्राप्त करना चाहते हैं: W3C के उदाहरण में संख्या देखते हैं और अगर ऊपर ग्राहक की उम्र या 18.

var ages = [3, 10, 18, 20]; 

function checkAdult(age) { 
    return age >= 18; 
} 

console.log(ages.findIndex(checkAdult)); 

कंसोल के बराबर मेल खाता है:

2 

आप इंडे के साथ एक सटीक तत्व सूचकांक प्राप्त कर सकते हैं Array के फ़ंक्शन, लेकिन आप एक अनुमानित नहीं कर सकते हैं।

var ages = [3, 10, 18, 20]; 
console.log(ages.indexOf(10)); 

रिटर्न:: यह तेजी से यदि आप किसी विशिष्ट तत्व लगाना चाहते है

1 

सूचकांक गिनती 0 पर शुरू होता है, तो पहला तत्व सूचकांक 0.

0

आपने जो आप उपयोग कर सकते है प्रीफर इंडेक्स में

[1, 2, 3].includes(2);  // true 
[1, 2, 3].includes(4);  // false 
[1, 2, 3].includes(3, 3); // false 


var vals = [ "foo", "bar", 42, "baz" ]; 
if (~vals.indexOf(42)) { 
// found it! 
} 
4

मुख्य अंतर इनके पैरामीटर हैं कार्य:

-> Array.prototype.indexOf():

var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
    var a = fruits.indexOf("Apple"); 
    The result of a will be: 2 

->Array.prototype।findIndex():

 var ages = [3, 10, 18, 20]; 

     function checkAdult(age) { 
     return age >= 18; 
     } 

     function myFunction() { 
     document.getElementById("demo").innerHTML = 
     ages.findIndex(checkAdult); 
     } 

     The result will be: 2 
+0

यह प्रश्न का उत्तर नहीं प्रदान करता है। एक बार आपके पास पर्याप्त [प्रतिष्ठा] (https://stackoverflow.com/help/whats-reputation) हो जाने पर आप [किसी भी पोस्ट पर टिप्पणी कर सकेंगे] (https://stackoverflow.com/help/privileges/comment); इसके बजाय, [उन उत्तरों को प्रदान करें जिन्हें पूछताछ से स्पष्टीकरण की आवश्यकता नहीं है] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-कर-बजाय)। - [समीक्षा से] (/ समीक्षा/कम गुणवत्ता वाले पदों/1824234 9) – Mamun

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