2012-10-28 12 views
116

मैं टाइटेनियम के साथ काम कर रहा हूँ,जावास्क्रिप्ट में सरणी तत्व मौजूद है या नहीं, यह जांचने के लिए कैसे करें?

मेरी कोड लगता है कि के रूप में,

var currentData = new Array(); 

if(currentData[index]!==""||currentData[index]!==null||currentData[index]!=='null') 
{ 
    Ti.API.info("is exists " + currentData[index]); 
    return true; 
} 
else 
{ 
    return false; 
} 

मैं सरणी currentData के सूचकांक,

गुजर रहा गैर मौजूदा तत्व के लिए, मैं अभी भी यह पता लगाने में सक्षम नहीं कर रहा हूँ कोड ऊपर का उपयोग कर

+1

आपका तर्क गलत है। आपको व्यक्तिगत स्थितियों के बीच संयोजन ('&&') की आवश्यकता है। –

उत्तर

200

उपयोग typeof arrayName[index] === 'undefined'

यानी

+०१२३५१६४१०६१
if(typeof arrayName[index] === 'undefined') { 
    // does not exist 
} 
else { 
    // does exist 
} 
+3

+1, अच्छा। आप 'if (arrayName [index] ===' अपरिभाषित ') का उपयोग भी कर सकते हैं' शॉर्टकट – AnchovyLegend

+44

@AchchovyLegend no के रूप में, आप नहीं कर सकते! लेकिन आप 'if (arrayName [index] === अपरिभाषित) का उपयोग कर सकते हैं। –

+10

यह विफल रहता है, अगर आइटम वहां है, लेकिन इसका मान अपरिभाषित है; इसके बजाय इस उत्तर का उपयोग करें -> http: // stackoverflow।com/प्रश्न/1098040/चेक-if-an-array-key-exist-in-a-javascript-object-or-array – Matus

2

मैं एक try .. catch ब्लॉक में techfoobar के जवाब रैप करने के लिए तो जैसे था:

try { 
    if(typeof arrayName[index] == 'undefined') { 
    // does not exist 
    } 
    else { 
    // does exist 
    } 
} 
catch (error){ /* ignore */ } 

... कि यह कैसे क्रोम में काम किया, वैसे भी (अन्यथा, कोड एक त्रुटि के साथ बंद कर दिया)।

58
var myArray = ["Banana", "Orange", "Apple", "Mango"]; 

if (myArray.indexOf(searchTerm) === -1) { 
    console.log("element doesn't exist"); 
} 
else { 
    console.log("element found"); 
} 
+2

दुर्भाग्य से, यह आईई 7 और नीचे में काम नहीं करता है। – darksoulsong

+2

मेरी राय में यह सबसे अच्छा जवाब है, अब तक आईई 7 अब और मुख्य नहीं है इसलिए यह कोई समस्या नहीं है। हालांकि मैं ट्रिपल बराबर का उपयोग करने का सुझाव दूंगा 'अगर (myArray.indexOf (searchTerm) === -1) ' –

1

यदि आप underscore.js का उपयोग करते हैं तो इस प्रकार की शून्य और अपरिभाषित जांच लाइब्रेरी द्वारा छिपी हुई है।

तो अपने कोड इस तरह दिखेगा -

var currentData = new Array(); 

if (_.isEmpty(currentData)) return false; 

Ti.API.info("is exists " + currentData[index]); 

return true; 

यह अब और अधिक पठनीय लग रहा है।

+0

भले ही आपका उत्तर सही है, तो मैं इसके लिए दो बार सोचूंगा। आपका कोड केवल खाली मूल्य की जांच के लिए underscore.js निर्भर होगा। बस एक साधारण रैपर फ़ंक्शन जारी करें (v) {वापसी (टाइप करें v! == 'अपरिभाषित'); } – Heroselohim

2

सरणी के तत्वों को भी सरल वस्तुओं या सरणियों हैं, तो आप some फ़ंक्शन का उपयोग कर सकते हैं:

// search object 
var element = { item:'book', title:'javasrcipt'}; 

[{ item:'handbook', title:'c++'}, { item:'book', title:'javasrcipt'}].some(function(el){ 
    if(el.item === element.item && el.title === element.title){ 
     return true; 
    } 
}); 

[['handbook', 'c++'], ['book', 'javasrcipt']].some(function(el){ 
    if(el[0] == element.item && el[1] == element.title){ 
     return true; 
    } 
}); 
2

आप बस इस का उपयोग कर सकते हैं:

var tmp = ['a', 'b']; 
index = 3 ; 
if(tmp[index]){ 
    console.log(tmp[index] + '\n'); 
}else{ 
    console.log(' does not exist'); 
} 
2

पर विचार सरणी एक:

var a ={'name1':1, 'name2':2} 

यदि आप जांचना चाहते हैं कि 'name1' मौजूद है या नहीं, तो बस इसका परीक्षण करें in के साथ:

if('name1' in a){ 
console.log('name1 exists in a') 
}else 
console.log('name1 is not in a') 
+3

"var a" आपके मामले में एक सरणी वस्तु नहीं है, लेकिन एक नियमित वस्तु है। Var = = ... होना चाहिए। मुझे लगता है कि लेखक को क्या चाहिए। – tomazahlin

+0

इस प्रकार किसी ऑब्जेक्ट में किसी कुंजी के अस्तित्व की जांच करने के लिए, किसी सरणी में किसी अनुक्रमणिका की उपस्थिति नहीं है। – Beejamin

3

मेरी राय में यह तरीका सबसे आसान है।

var nameList = new Array('item1','item2','item3','item4'); 

// Using for loop to loop through each item to check if item exist. 

for (var i = 0; i < nameList.length; i++) { 
if (nameList[i] === 'item1') 
{ 
    alert('Value exist'); 
}else{ 
    alert('Value doesn't exist'); 
} 

और शायद ऐसा करने का एक और तरीका है।

nameList.forEach(function(ItemList) 
{ 
    if(ItemList.name == 'item1') 
     { 
      alert('Item Exist'); 
     } 
} 
2

सरल आइटम की जाँच करने के रास्ते मौजूद हैं या नहीं

Array.prototype.contains = function(obj) { 
    var i = this.length; 
    while (i--) 
     if (this[i] == obj) 
     return true; 
    return false; 
} 

var myArray= ["Banana", "Orange", "Apple", "Mango"]; 

myArray.contains("Apple") 
संबंधित मुद्दे

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