2013-06-25 60 views
1

我一直在做測試,如果一個值存在於一個數組中,並不斷收到indexOf('textvalue')的匹配。如何測試數組項的文本是否包含子字符串?

但是,我的'textvalue'將是一個子字符串,因此不會拉比賽。這是因爲我將字段名稱傳遞給方法,只需要刪除「Door:Front Left」;文本通過匹配「門」上的數組項。有誰知道我能做到這一點?

這裏的示例代碼我工作:

(spnSelectedDisclosures將選定字段列表,這是消除從文本,這是分號分隔以前字段選擇的代碼。 )

var currentText = $("#spnSelectedDisclosures").text(); 

var existingArr = currentText.split(";") 

for (i=0;i < existingArr.length;i++) { 

    var indexItem = " " + existingArr[i].toString(); // why is this still an object, instead of a string? Adding a space to it was a desperate try to make indexItem a string variable. 

    if (indexItem.contains(substringText)) { // offending line, saying the object has no method 'contains' 
     alert("there's been a match at: " + i); 
     textToRemoveIndex = i; 
     break; 
    } 
    } 

var textToRemove = existingArr[textToRemoveIndex]; 
var newText = currentText.replace(textToRemove,""); 
$("#spnSelectedDisclosures").text(newText); 

回答

3

這是怎麼回事?

for (i=0;i < existingArr.length;i++) { 
    if (existingArr[i].indexOf(substringText) > -1) { 
    alert("there's been a match at: " + i); 
    textToRemoveIndex = i; 
    break; 
    } 
} 
+0

好的。我以直接的方式討論這個問題。這也是有道理的。只需要查找索引是一個正數,並且這基本上意味着「包含」。多謝你們!另外,感謝關​​於.contains()的兼容性提及。 – grayboat

0

String.contains()具有非常有限的支持:

瀏覽器兼容性

Chrome    Not supported 
Firefox (Gecko)  19.0 (19) 
Internet Explorer Not supported 
Opera    Not supported 
Safari    Not supported 

你需要使用正則表達式或的indexOf。

if (indexItem.indexOf(substringText)!==-1) { 
相關問題