[英]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
將顯示兩條消息:
請注意,您不需要在循環開始之前初始化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.