4

特定の検索語で配列をフィルタリングするにはどうすればよいですか?たとえば、配列があります[Tom Harry、Tom John、John Glen、Tom Harward]「TomH」を検索すると、TomHarryとTomHarwardのみが出力として表示されます[TomHarward、TomHarry]。Javascriptを使用する

var k=0;
filter=[];
var fc=input.charAt(0);
var sc=input.charAt(1);
for(var i=0;i<array.length;i++)
{
    if(array[i].charAt(0)===fc)
    {
        if(array[i].charAt(1)===sc || sc.charAt(1)=="" )
        {       
            filter[k]=[];
            filter[k]=array[i];
            filter[k]=array[i];
            k++;    
        }
        else
        {
            continue;
        }
    }
    else
    {
        continue;
    }
}
4

5 に答える 5

7

JavaScript 1.6 をサポートするブラウザーで作業している場合は、Array.filterが最適です。あなたの問題は、次のワンライナーで解決できます(確かに、search_patternパラメーターを持つ関数を導入することで一般化できます):

['Tom Harry','Tom John','John Glen','Tom Harward'].filter(function(name){return name.match(/Tom H/);});

IE8 以下のような古いブラウザでも動作するようにしたい場合は、filter自分で簡単に実装できます (上記のリンクには実装が含まれています)。ところで、を含む多くのコレクション操作機能を提供するアンダースコア ライブラリを使用することをお勧めしますfilter

于 2013-01-01T08:45:52.663 に答える
1

You could use the search() method inside of a for loop.

Info on the search() method: http://www.w3schools.com/jsref/jsref_search.asp

Example:

for(var i=0; i < nameOfArray.length; i++){
    if(nameOfArray[i].search('Tom H') > -1){
       resultArray.push(nameOfArray[i]); 
    }
}

This code will loop through every element in your array and if the text you entered matches partially what you typed (via the search method) it will push the item from the array into a results array. This should create an array that has all matching results.

于 2013-01-01T08:33:34.107 に答える
0

String.match()またはString.indexOf()メソッドを確認できます。

var s="Tom Harry"
 if (s.match(/Tom H.*/)) {
  // do something
}

または、indexof()を使用できます。

s.indexOf("Tom H") 

次に、インデックスを確認します。> = 0の場合、その文字列が含まれます。

于 2013-01-01T08:22:05.387 に答える
0
 <script type="text/javascript">

  var src1= ["Tom Harry","Tom John","John Glen","Tom Harward"];

alert(searchStringInArray (src1,'Tom H') );


function searchStringInArray (src1,searched) 
{
  var res=""
  for (var j=0; j<src1.length; j++) {
    if (src1[j].match (searched)) 
    {
    res=res+src1[j]+","
    }
}
return res;
} 
</script>

この仲間を使う

于 2013-01-01T08:36:34.517 に答える