2010-06-19 31 views
10

我有一個字符串數組。我需要找到以鍵開頭的所有字符串。 例如:如果有一個數組['apple','ape','open','soap'] 當用鍵'ap'搜索時 我應該只得到'蘋果'和'猿'而不是'肥皂'。從javascript數組中查找匹配字符串

這是javascript。

回答

9
function find(key, array) { 
    // The variable results needs var in this case (without 'var' a global variable is created) 
    var results = []; 
    for (var i = 0; i < array.length; i++) { 
    if (array[i].indexOf(key) == 0) { 
     results.push(array[i]); 
    } 
    } 
    return results; 
} 
+1

僅供參考,在的indexOf IE8失敗的方法;我也正要使用它:(:(是的,我必須支持較舊的IE,並希望我沒有) – mkralla11 2013-09-03 17:14:11

15

作爲@安妮建議使用indexOf。 indexOf用於查找給定字符串內的子字符串。如果不匹配,則返回-1,否則返回第一個匹配的起始索引。如果該索引是0,則表示該比賽是在開始階段。

另一種方法是使用regular expressions。使用^字符從字符串的開頭進行匹配。正則表達式:

/^he/

將匹配以"he"開頭的所有字符串,如「你好」,「聽」,「氦」等,爲正則表達式的test方法返回指示是否一個布爾值沒有成功的比賽。上述正則表達式可以測試爲/^he/.test("helix"),這將返回true,而/^he/.test("sheet")不會像"he"不會出現在開頭。

循環輸入數組中的每個字符串,並收集新數組中匹配的所有字符串(使用indexOf或regex)。這個新數組應該包含你想要的。

1

With 2 改進,可以找到是否包含,不僅是第一個字符,它有第三個參數來定義返回的值:true表示只返回數組內的元素數(索引/鍵),假或任何不被接受或沒有值意味着返回完整的字符串數組[element],並且如果設置爲'position = 3',則返回包含字符串的數組的值,正好在'after = number'位置,這裏是3!


function find(key, array, returnindex) 
{ 
var results = []; 
if {returnindex.indexOf('position=') == 0} 
{ 
    var a = parseInt(returnindex.replace('position=','')); 
    returnindex = false; 
} 
else if (returnindex != true) 
{ 
    returnindex = false; 
} 
for (var i = 0; i < array.length; i++) 
{ 
    var j = '-'+array[i].indexOf(key); 
    if (typeof a == 'undefined') 
    { 
     if (i > 0) 
     { 
      j = 'ok'; 
     } 
    } 
    else 
    { 
     if (i == a+1) 
     { 
      j = 'ok'; 
     } 
    } 
    if (j == 'ok' && returnindex) 
    { 
     results.push(i); 
    } 
    else 
    { 
     results.push(array[i]); 
    } 
} 
return results; 
} 
-1

您可以使用過濾器,正則表達式來實現這一點:

function startsWith(array, key) { 
 
    const matcher = new RegExp(`^${key}`, 'g'); 
 
    return array.filter(word => word.match(matcher)); 
 
} 
 

 
const words = ['apple','ape','open','soap'] 
 

 
const key = 'ap' 
 

 
const result = startsWith(words, key)

相關問題