0

こんにちは、私は現在、私が開発したコードのこの部分を持っていますが、いくつかの編集を行いたいです:

$('#target').keydown(function(event) {
 if (event.which == 13) 
 {
    var users = ["Dennis Lucky","Lucy Foo","Name Lastname","Billy Jean"];
    var match = 0;
    var str = $('#target').val();

    for(i=0;i<users.length;i++)
    {
        if ( users[i].toLowerCase().indexOf(str.toLowerCase()) > -1 )
        {
            match++;
            name = users[i];
        }
    }
    if(match == 1)
    {
        $('#target').val('');
        $('#chatbox').append('<span style="color:blue;">'+name+'</span>&nbsp;');
        console.log(name);
    }
    else if (match >= 2)
    {
        console.log("many entries");
    }
 }});

ユーザーに部分的な文字列が存在する場合に何かを入力してEnterキーを押すと、青色になります。このコードでは、「Lu」と書くと「Dennis Lucky」と「Lucy Foo」の2つの結果が得られるという問題があります。 .

コードを変更したいので、「Lu」と入力すると、この文字列で始まる単語の検索が開始され、含まれません。

4

2 に答える 2

0
if ( users[i].toLowerCase().indexOf(str.toLowerCase()) > -1 )

indexOf の戻り値が -1 より大きい場合、条件は真です。JavaScript では、一致する「needle」(検索している文字列) が「haystack」(検索している文字列) に見つからない場合、indexOf は -1 を返します。それ以外の場合は、「干し草の山」の「針」の最初のインデックスを返します。

私の indexOf の用語を説明するために、以下に例を示します。

haystack.indexOf(needle); // How to use the indexOf function
console.log("apples oranges apples".indexOf("apples")); // This would print 0.
console.log("apples oranges apples".indexOf("white")); // This would print -1.

文字列が「針」で始まることを確認したい場合は、コードを次のように変更するだけです。

    if ( users[i].toLowerCase().indexOf(str.toLowerCase()) == 0 )

「単語」(「Lucy Foo」は「Lucy」と「Foo」) が必要な場合は、名前文字列をスペース文字で分割し、結果の配列の要素で indexof 検索を実行するか、正規表現に切り替えます。

于 2013-08-28T11:10:17.713 に答える