javascripts数组

时间:2013-03-04 11:47:10

标签: php javascript arrays

我在网上和我的朋友一起玩

我们互相要求(姓名,动物或无生命)以特定字母开头

所以我正在考虑建立一个页面来帮助我培训这个游戏

这是一个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中构建此函数的任何帮助?

3 个答案:

答案 0 :(得分: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;
}

理想情况下,应该检查一个密钥是否存在,但只有您将使用它...

答案 1 :(得分: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') );

答案 2 :(得分:1)

我完全有点过分了这个:)有趣的问题,希望它可以教给你一些东西。

See on 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' ]
    }
}