2010-03-08 25 views

उत्तर

23

क्योंकि "इन" में वास्तविक संपत्ति/अनुक्रमणिका उपलब्ध है, तो "इन" सत्य लौटाता है। [1, 2] एक सरणी है, और 0 सूचकांक पर एक वस्तु है। इसलिए, 0 [1, 2] में, और 1 [1, 2] में। लेकिन! (2 में [1, 2])।

संपादित करें: आप जो संभवतः इरादा रखते हैं, उसके लिए डेविड डोरवर्ड की टिप्पणी बहुत उपयोगी है। आप (कुछ विकृत) 'में' के साथ रहना चाहते हैं, आप एक वस्तु शाब्दिक

x = {1: true, 2: true}; 

इस का उपयोग 1 in x && 2 in x && !(0 in x) आदि की अनुमति चाहिए सकता है लेकिन वास्तव में, बस indexOf का उपयोग करें।

+3

इसके अलावा, फेलिक्स शायद 'indexOf' की तलाश में है: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Array/indexOf (जो जे एस 1.6 की आवश्यकता है, लेकिन यह है कि यूआरआई शामिल एक कार्यान्वयन जिसमें आप 1.5 या उससे पहले के ब्राउज़र पर अपने कोड में शामिल कर सकते हैं) – Quentin

2

आप शायद [1,2].indexOf(0) खोज रहे हैं। indexOf यद्यपि यानी 6 में काम नहीं कर सकता है।

if(!Array.indexOf) { 
    Array.prototype.indexOf = function(obj) { 
     for(var i=0; i<this.length; i++) { 
     if (this[i]==obj) { 
      return i; 
     } 
     } 
     return -1; 
    } 
} 
5

क्योंकि वहाँ सरणी में एक 0 वें तत्व है:

यहाँ एक कार्यान्वयन है कि यह ठीक करता है।

> 0 in [8,9] 
true 
> 1 in [8,9] 
true 
> 8 in [8,9] 
false 
इस के लिए
संबंधित मुद्दे