2012-10-28 7 views
7

मैं एक समारोह है कि इस तरह काम करता है बनाना चाहते:जावास्क्रिप्ट एक मूल्य के लिए एक सरणी खोज और प्राप्त उसके प्रमुख

function arraySearch(array, valuetosearchfor) 
{ 
// some code 
} 

अगर यह सरणी में मूल्य पाता है, यह कुंजी वापस आ जाएगी, यह जहां पाया महत्व। यदि एक से अधिक परिणाम (एक से अधिक कुंजी) हैं, या कोई परिणाम नहीं मिला (कुछ भी नहीं मिला), तो फ़ंक्शन FALSE लौटाएगा।

मैं इस कोड मिला:

function arraySearch(arr,val) 
     { 
      for (var i=0; i<arr.length; i++) 
       { 
        if (arr[i] == val) 
        {      
         return i; 
        } 
        else 
        { 
         return false; 
        } 
       } 
     } 

और इस तरह इसका इस्तेमाल किया:

var resultofarraycheck = arraySearch(board, chosen); 
       if (resultofarraycheck === false) 
       { 
         document.getElementById(buttonid).value; 
         chosen = 0; 
       } 

लेकिन यह काम करने के लिए प्रतीत नहीं होता। जब इसे कुछ मिलना चाहिए, तो यह कुंजी (i) के बजाय झूठा लौटाता है।

मैं इसे कैसे ठीक कर सकता हूं, या मैं गलत क्या कर रहा हूं?

धन्यवाद, और मुझे खेद है कि मेरी अंग्रेजी पर्याप्त स्पष्ट नहीं थी।

+2

ले जाएँ 'वापसी FALSE' कर सकते हैं करने के लिए * के बाद *' for' पाश। (और कई समान परिणामों के साथ मामले को संभालने के बारे में सोचें।) – DCoder

+0

[इकबाल डीजुलफ़्रफ़ का उत्तर] (http://stackoverflow.com/a/13109873/1233508) केवल एकमात्र ऐसा है जो वास्तव में डुप्लिकेट कुंजी के संबंध में आपकी आवश्यकता को पूरा करता है। – DCoder

उत्तर

16
function arraySearch(arr,val) { 
    for (var i=0; i<arr.length; i++) 
     if (arr[i] === val)      
      return i; 
    return false; 
    } 
+0

बहुत बहुत धन्यवाद! इसने काम कर दिया। – shohamh

12

आप indexOf का उपयोग कुंजी प्राप्त करने jsfiddle

if(!Array.prototype.indexOf){ 
    Array.prototype.indexOf = function(val){ 
     var i = this.length; 
     while (i--) { 
      if (this[i] == val) return i; 
     } 
     return -1; 
    } 
} 

    var arr = ['a','b','c','d','e']; 

    var index = arr.indexOf('d'); // return 3 
+1

जब तक आपको IE का समर्थन करने की आवश्यकता नहीं है <9 ... – DCoder

+0

यह वीजा बनाम है, मैं मूल्य – shohamh

+1

@DCoder से कुंजी प्राप्त करना चाहता हूं I IE के लिए supprort जोड़ा <9 – Anoop

2
function arraySearch(arr, val) { 
    var index; 
    for (var i = 0; i < arr.length; i++) { 
    // use '===' if you strictly want to find the same type 
    if (arr[i] == val) { 
     if (index == undefined) index = i; 
     // return false if duplicate is found 
     else return false; 
    } 
    } 

    // return false if no element found, or index of the element 
    return index == undefined ? false : index; 
} 

आशा इस मदद करता है :)

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