2016-12-09 4 views
0

У меня вопрос о том, как получить элементы массива из другого элемента массива. Я не могу получить оценки из набора баллов для команд. Я вижу, что возвращается n-й символ имени.Элемент массива к объекту

function runData() { 
    var Teams = ["bears", "pats", "qbs"]; 

    var bears = [34, 45, 23]; 
    var pats = [24, 33, 41]; 
    var qbs = [33, 41, 28]; 

    for (t = 0; t < Teams.length; t++) { 
     var teamToGet = Teams[t]; 
     getScore(); 
     var para = document.createElement("p"); 
     pageOut = teamToGet; para.innerHTML = pageOut; 
     document.getElementById("p1").appendChild(para); 
    } 

    function getScore() { 
     var score = teamToGet[t]; 
     teamToGet += "-" + score; 
    } 
} 
+0

Я думаю, что форматирование кода было опечатано, не могли бы вы взглянуть? – TankorSmash

+2

Если вы пытаетесь получить доступ к переменной по имени, вы не должны. Вместо этого имейте объект 'scores = {" bears ": [34,45,23], ...};' и затем получите доступ к 'score [teamToGet]'. –

+1

Внутри метода 'getScore()', как определяется 't' как определено? Он не существует внутри этой области закрытия. Вам нужно передать переменную через параметр. – KDOT

ответ

0

Я думаю, это просто потому, что вы заполняете свой массив команд строками вместо массивов других команд.

Теперь, когда вы перебираете команды, вы получите объект с именем команды и множеством баллов, а не только строкой имени команды.

function runData() { 

    var bears = { name : "bears", scores : [ 34, 45, 23 ] }; 
    var pats = { name : "pats", scores : [ 1, 2, 3 ] }; 
    var qbs = { name : "qbs", scores : [ 33, 41, 28 ] }; 

    var Teams = [ bears, pats, qbs ]; 

    for(var t = 0; t < Teams.length; t++) { 
     var teamToGet = Teams[t]; // will be an object 
     var score  = getScore(teamToGet); 
     var para  = document.createElement("p"); 
     // not sure what you're doing here 
     // pageOut = para.innerHTML = pageOut; 
     // document.getElementById("p1").appendChild(para); 
    } 

    function getScore(team) { 
     // not exactly sure what you're doing here. 
     // I'll just return the first score. 
     return team.name += "-" + team.scores[0]; 
    } 
} 
+0

Просто слово @KDOT, что ваш переформатировать, пока мне это нравится, не соответствует многим стандартным руководствам по стилю. Я предпочитаю использовать намного больше пробелов, чем большинство руководств по стилю, больше похоже на то, как вы это делаете, но общий стандарт, который я видел в таких местах, как Google, Bloomberg, Reuters и т. Д., Обнимается практически обо всем, {никогда: это } {всегда: это} и так далее. –

+0

Я просто отступил от него для форматирования SO, а не кода. Я только добавил формат кода, где лучше всего подходит. Целью был формат ответа, так как у вас были '}' и 'function runData()' зависания вне кодового пространства. – KDOT

Смежные вопросы