簡體   English   中英

檢查值存在於數組位置

[英]Checking value exists in an array position

我有一個名為“data”的大型數組。

在第10個數組位置,我有它的數據值:

[10] => 1,2 

現在我在JS中嘗試做的是這樣的:

 i = 1;
 if(i in data[10]){
   //great success, very nice!
 }

我以為逗號分隔的數據可能就像一個帶有“IN”方法的數組,但它不起作用。 我收到此錯誤:

 Uncaught TypeError: Cannot use 'in' operator to search for '1' in 1,2 

什么是我的問題的正確解決方案?

您沒有顯示如何將1,2分配給data[10] 在JavaScript shell /控制台中執行以下操作時, 1,2的值只是2 請參閱有關逗號運算符如何工作的參考

但是,您收到的錯誤消息表明您有字符串"1,2" 要將其轉換為數組,您應該使用split()如下所示:

> data[10] = "1,2"
1,2
> data[10].split(',')
[ "1", "2" ]

要迭代這些值,您可以在結果數組中使用in運算符,如下所示:

var data = new Array();
data[10] = '1,2';
var valueArray = data[10].split(',');
for (var i in valueArray) {
  alert('valueArray[' + i + '] is ' + valueArray[i]);
}

您可以在瀏覽器控制台中運行此命令, alert將顯示兩條消息:

  • valueArray [0]為1
  • valueArray [1]是2

請注意,您不需要在循環開始之前初始化i in運算符將自動執行此操作。 此外,最好使用局部變量,因此在上面的代碼中使用var i

另外,如果您是JS的新手,但是您需要處理大量的數據結構操作,那么值得了解一下underscore.js 特別看看_.each() Underscore可以幫助您避免編寫大量循環邏輯。

但是,如果要進行成員資格檢查,則需要使用not in而不是Array.indexOf() 有關從注釋中的jsfiddle分叉的示例,請參閱http://jsfiddle.net/nRS9m 更多例子:

> valueArray
[ "1", "2" ]
> valueArray.indexOf("3")
-1
> valueArray.indexOf("1")
0
> valueArray.indexOf("2")
1
> valueArray.indexOf(1)
-1
> valueArray.indexOf((1).toString())
0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM