2012-01-14 12 views
16

उदाहरण के लिए, सरणी प्रकार के सरणीकरण नामक एक चर [1,2,3,4] है।जावास्क्रिप्ट - सरणी के तत्व की स्थिति प्राप्त करें

मैं उस स्थिति को कैसे प्राप्त करूं जिसमें लूप का उपयोग करने के अलावा सरणी चर में "3" मान हो?

धन्यवाद।

उत्तर

34

indexOf का उपयोग करने पर विचार करें, यह सरणी में तत्व की 0-आधारित स्थिति देता है।

उदा

[1,2,3,4].indexOf(3); // produces 2 

ध्यान दें कि यह विधि IE 8 और उसके बाद में उपलब्ध नहीं है।

+2

यदि सरणी [1, 2, 3, 4, 3] थी, तो आप दो अलग-अलग चरों पर दोनों 3s की स्थिति कैसे प्राप्त करेंगे? – CPC

+0

संदर्भ के लिए, आप कई तत्वों की स्थिति वाले सरणी को वापस करने के लिए Array.reduce विधि का उपयोग कर सकते हैं। निम्न कोड एक स्थिति सरणी [2,4] देता है - दोनों 3s की स्थिति। var array = [1, 2, 3, 4, 3] .reduce (फ़ंक्शन (सरणी, एन, i) {if (n === 3) array.push (i); वापसी सरणी;}, []); – RepeatQuotations

2

या सरल पाश के लिए उपयोग एक:

function getPosition(elementToFind, arrayElements) { 
    var i; 
    for (i = 0; i < arrayElements.length; i += 1) { 
     if (arrayElements[i] === elementToFind) { 
      return i; 
     } 
    } 
    return null; //not found 
} 

getPosition(3, [1, 2, 3, 4]); 
4

jQuery, एक "inArray" कार्यक्षमता के साथ yout प्रदान करता है PHP के समान:

var a = [1,2,3,4]; 
console.log(jQuery.inArray(3, a)); //returns 2 

आप पहले से ही अपनी परियोजना में jQuery का उपयोग कर रहे हैं, तो यह जाने का रास्ता होगा! jQuery यदि संभव हो तो indexOf (सबसे तेज़ समाधान) का उपयोग करता है और यदि नहीं, तो लूप आधारित समाधान पर वापस कदम उठाता है।

0

के रूप में पहले से ही कुछ जवाब द्वारा बताया गया, नए ब्राउज़रों में सरणियों indexOfmap और forEach तरह तरीकों कि बहुत के लिए-छोरों के बहुत सारे लेखन से बचने के लिए सुविधाजनक हैं।

यदि आपको इन कार्यों के बिना पुराने वातावरण का समर्थन करने की आवश्यकता है तो मैं को उन पुस्तकालयों का उपयोग करके दृढ़ता से अनुशंसा करता हूं (या स्वयं का एक लिखना) उन सामान्य सरणी संचालनों को लागू करने के लिए (किस तरह से सुझाव दिया गया है)।

var arrayfn = (function(){ 
    var M = {}; 

    M.indexOf = function(array, item){ ... }; 

    M.contains = function(array, item){ return M.indefOf(array, item) !== -1; }; 

    M.map = function(array, callback){ ... }; 
}()); 

arrayfn.contains([1,2,3], 2); 

सबसे लोकप्रिय जे एस चौखटे पहले से ही इनमें से अधिकांश वैसे भी builtin होना चाहिए। मेरे सिर के ऊपर से मुझे याद है कि डोजो, jQuery और अंडरस्कोर में इनमें से कुछ कार्य हैं, उदाहरण के लिए।

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