1

インターネットで友達と遊んでいます

(名前、動物、または無生物)は特定の文字で始まるとお互いに言います

だから私はこのゲームについてのトレーニングに役立つページを作成することを考えています

これは、たとえばphpコードです。

function getNamesByChars($chars,$type='name'){
    $names=array(
    'd'=>'Dan',
    'j'=>'John',
    );
    $animals=array(
    'd'=>'Dog',
    'j'=>'Jar',
    );

    $chars=explode(' ',$chars);    
    foreach($chars as $char){
        //if it a name
        if($type=='name')
        $results.=$names[$char];
        //if it animal
        elseif($type=='animal')
        $results.=$animals[$char];
    }
}
    getNamesByChars('j d','animal');
    //results (Jar dog)

このページをできるだけ速くする必要があるというここでの問題

PHPではページをロードする必要があります

私はjavascriptがより速い方法だと思います

しかし、私はjavascriptの初心者なので、この関数を作成できません

javascriptでこの関数を構築するのに何か助けはありますか?

4

3 に答える 3

2

ここにありますが、JavaScriptを本当に知りたい場合は、tutoを読む必要があります。

function getNamesByChars(chars,type){
   type = type || 'name';
   var things = { name: {'d': 'dan', 'j': 'john'},
                  animal:  {'d': 'dog', 'j': 'jar'}};
   var results = [];
   var charsarr = chars.split(' ');
   for (var i in charsarr) {
      results.push(things[type][charsarr[i]]);  
   }
   return results;
}

理想的には、キーが存在しないかどうかをチェックする必要がありますが、それを使用するのはあなただけです...

于 2013-03-04T12:01:06.290 に答える
1

それはjsのあなたのphp関数のカバーです

function getNamesByChars( chars,type ){

   type = type || 'name';

   var names = { 'd':'Dan', 'j':'John' },
       animals = { 'd':'Dog', 'j': 'Jar' };
       results = '';

   var chars = chars.split(' ');

   for( var i=0,len = chars.length; i< len ;i++ ){

       if( type == 'name'){

           results += names[ chars[i]];

       } else if( type == 'animal'){

           results += animals[ chars[i]];       

       }

   }

   return results ;

}

結果をコンソールに出力します

console.log( getNamesByChars('j d','animal') );

またはアラート

alert( getNamesByChars('j d','name') );
于 2013-03-04T12:00:04.417 に答える
1

私はこれについて完全にやり過ぎました:)楽しい問題、それがあなたに何かを教えてくれることを願っています。

JSFiddleで見る

HTML

<div>
    <label for="chars">Chars:</label>
    <input id="chars" type="text" />
</div>
<div>
    <input id="names" type="radio" name="names-radio" checked />
    <label for="names">Names</label>
    <input id="animals" type="radio" name="names-radio" />
    <label for="animals">Animals</label>
</div>
<button id="get-names">Get values!</button>

<div>
    <span>Result</span>
    <div id="result"></div>
</div>

JavaScript

document.getElementById('get-names').onclick = getNamesClick;

function getNamesClick() {
    var chars = document.getElementById('chars').value;
    var names = document.getElementById('names').checked ? 'names' : 
        document.getElementById('animals').checked ? 'animals' : ''
    var result = getNamesByChars(chars, names);
    alert(result);
    console.log(document.getElementById('result'));
    document.getElementById('result').innerHTML = result;
}

function getNamesByChars(chars, names) {
    var result = '';
    charsArray = chars.split(' ');
    for (var i = 0; i < charsArray.length; i++) {
        var values = data[names][charsArray[i]];
        for (var j = 0; j < values.length; j++) {
            if (result != '')
                result += ' ';
            result += values[j];
        }
    }
    return result;
}

var data = {
    'names': {
        'a': [ 'Andrew', 'Allison' ],
        'b': [ 'Bob', 'Barry' ],
        'c': [ 'Cheryl', 'Carol' ],
        'd': [ 'Daniel', 'Danny' ],
        'e': [ 'Eddie', 'Emma' ],
        'f': [ 'Frank', 'Flo' ],
        'g': [ 'Greg', 'Grant' ],
        'h': [ 'Holly' ],
        'i': [ 'Ian' ],
        'j': [ 'John' ],
        'k': [ 'Kaylie' ],
        'l': [ 'Liam' ],
        'm': [ 'Mary' ],
        'n': [ 'Ned' ],
        'o': [ 'Oliver' ],
        'p': [ 'Peter' ],
        'q': [ 'Quentin' ],
        'r': [ 'Ryan' ],
        's': [ 'Sarah' ],
        't': [ 'Tom' ],
        'u': [ 'Ualani' ],
        'v': [ 'Victor' ],
        'w': [ 'Will' ],
        'x': [ 'Xan' ],
        'y': [ 'Yvette' ],
        'z': [ 'Zoe' ]
    },
    'animals': {
        'd': [ 'Dog', 'Dolphin' ],
        'e': [ 'Elephant' ]
    }
}
于 2013-03-04T12:18:06.550 に答える