2015-11-07 29 views
-1

實際的問題是,這個(堆棧溢出的問題,限制字符):如何檢查字符串是否存在於多維數組中,然後顯示數組中的第一個字符串被找到的項目?

如何檢查一個字符串是否從一個(非靜態)多維數組的文本框出現,然後顯示在第一項從哪個數組中找到該字符串? (使用jQuery)

例如:。

(這不是我實際上做的,這只是一個例子,我明白我提供有一個更簡單的解決方案的例子這不是我後,雖然)

HTML

<input type="text" id="textbox"> 
<div id="output"></div> 

JS:

var array = [ 
    ["that's an ice-cream topping","sprinkles","chocolate syrup"], 
    ["that's a pizza topping","basil","cheese"], 
    ["that's a car part","wheel","headlights","windshield wipers"] 
]; 

('#textbox').keyup(function(){ 
    if(/*a match is found from the textbox in the array*/){ 
     ('#output').html(/*first item in the array the string was found in*/); 
    } else { 
     ('#output').html(); 
    } 
}); 

這就是我想要實現: 如果用戶鍵入「灑東西」,在文本框中,只要「灑」被輸入,輸出會顯示「這是一個冰淇淋配料。」

附註:這裏假設在文本框中輸入「這是冰淇淋打頂」,也會顯示「這是冰淇淋打頂」。這也假定數組可以被改變並且從不相同。

+0

['Array.prototype.find'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find) – Andreas

+0

這可以幫助你:http://stackoverflow.com/questions/8809425/search-multi-dimensional-array-javascript –

回答

0

你可以做這樣的事情:

$('#textbox').keyup(function() { 
    var searchResult = findMatch($(this).val()); 
    if (searchResult) { 
     $('#output').html(searchResult); 
    } else { 
     $('#output').html(''); 
    } 
}); 

function findMatch(enteredString) { 
    for (var i in array) { 
     if ($.inArray(enteredString, array[i]) !== -1) { 
      return array[i][0]; 
     } 
    } 
    return ''; 
} 
+0

非常感謝你!這工作很好!但是,我應該澄清,我不需要找到完全匹配。 $ .inArray查找值的完全匹配。我只需要看看這個值是否存在於importedString的開頭。任何幫助? – Lolsdasfgnhg

+0

@Lolsdasfgnhg使用'array [i] .indexOf(enteredString)=== 0'來匹配被輸入的字符串的開頭 – Sean

+0

@Sean你是否在if語句中表示?如果是這樣,我不敢說這是行不通的。 – Lolsdasfgnhg

相關問題