2015-07-21 209 views
0

我有這樣如何查找數組中指定字符串的索引?

var x=["A|a","B|b","C|c"];

陣列現在,我想找到關於 'C' 的指數,其爲x [2]。因此,我們可以通過運行「for」循環來獲得'c'的索引值,並將每個字符串與'|'的分隔符分開我們可以找到它。

但是,有沒有簡單的方法來找到值?

+0

你可以在這種情況下使用indexOf x.indexOf(「c」); – Adil

+1

如果所有的數組元素都是這種格式,爲什麼要分割它? 'x.indexOf( 'C | C')'? – George

回答

2

var x=["A|a","B|b","C|c"]; 
 
var index = -1; 
 
x.forEach(function(e, i){ 
 
    if (e.indexOf("c") !== -1) index = i; 
 
}) 
 
alert(index);

2

你可以嘗試這樣的事情

Array.prototype.customIndexOf = function(str){ 
    var s = str.toUpperCase()+"|"+str; 
    return this.indexOf(s); 
}; 

var x=["A|a","B|b","C|c"]; 
x.customIndexOf('c'); 

一個更好的辦法

Array.prototype.customIndexOf = function(str, func){ 
    var s = func(str); 
    return this.indexOf(s); 
} 

var x=["A|a","B|b","C|c"]; 
x.customIndexOf('c', function(arg){ 
    return arg.toUpperCase()+"|"+arg.toLowerCase(); 
}); 
+1

我建議稍作修改:'var s = str.toUpperCase()+'|' + str.toLowerCase();'這樣,傳入的字符串是小寫還是大寫並不重要。 –

+1

這就是grt。一個更好的解決方案是,我們可以傳遞迴調,用戶可以根據需要修改搜索字符串。我剛剛更新了我的答案。 – abs

1

如何:

for(var i in x){ 
if(x[i].indexOf('c') != -1) 
    alert(i); 
} 
+1

歡迎來到堆棧溢出,我正在評論你的帖子。關於如何改進自己的帖子以及讓自己的答案被接受/提升的幾點建議。首先,確保你解釋你的解決方案如何解決問題。或者,嘗試提供一個工作小提琴。還可以選擇但優先選擇,它也有助於鏈接到相關文檔。如何回答:http://stackoverflow.com/help/how-to-answer –

相關問題