2013-03-04 2 views
1

Я играю с друзьями в ИнтернетеJavaScripts массивы

мы спрашиваем друг друг, чтобы сказать (имя, или животное, или неодушевленное) начинается с определенной буквой

Так что я имею в виду о создании страницы мне помочь в обучении об этой игре

Это 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?

+0

Взгляните на этот вопрос [] (http://stackoverflow.com/questions/1387149/best -метод-для-превращающего-A-PHP-массив-к-JavaScript? RQ = 1). –

+0

Если ваши друзья знают, как просмотреть источник страницы, все слова будут видны. –

+0

@Minko Gechev Никто не увидит эту страницу, кроме меня, это будет как программа –

ответ

1

Это Coversion вашей функции PHP в JS результате

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')); 
+0

Спасибо, что он работает так, как я хочу это точно –

2

Здесь, но вы должны прочитать Tuto если вы действительно хотите знать javascript ....

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; 
} 

В идеале должен быть какой-то проверка, если ключ не существует, но, как только вы будете использовать его ...

+0

Спасибо, что он работает так хорошо И большое спасибо за ваш совет. Я только начал изучать JavaScript, но я не дошел до этого этапа –

+0

хорошо, что был идеальным упражнением для начала;) – charly

+0

Я все еще на стадии перемен –

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' ] 
    } 
} 
Смежные вопросы