Получить значение из массива - PullRequest
0 голосов
/ 22 января 2011

У меня есть код, с которым мне нужна помощь:

var bob = [10,30,50,20,8];

// Call the function

foo(bob);

var foo = function(bob){

 var max = 0,
 min = 0,
 average = 0,
 sum = 0;

 max = Math.max.apply( null, bob); // Get the max value.
 min = Math.min.apply( null, bob); // Get the min value.


 for( var i = 0; i < bob.length; i++ ){
  sum += bob[ i ];
 }

 average = sum / l;

 var resultArr = [];

 resultArr[0] = average;
 resultArr[1] = min;
 resultArr[2] = max;

 return resultArr;
}


document.getElementById('max').innerHTML = "Max value: "; // i want to print the max value here.

Эта функция возвращает массив с максимальным, минимальным и средним значениями.Как я могу выбрать, какое значение печатать в разных div?

Ответы [ 3 ]

1 голос
/ 22 января 2011

У вас уже есть ответ:

var resultArr = foo(bob);
document.getElementById('max').innerHTML = resultArr[2];
document.getElementById('min').innerHTML = resultArr[1];
// etc
0 голосов
/ 22 января 2011

У вас есть несколько вещей, которые здесь перепутаны.У вас есть глобальная переменная bob, а также bob в качестве аргумента функции.Кроме того, у вас есть массив результатов, который локально для функции foo называется resultArr, но вы не назначаете его нигде при вызове функции foo.

Попробуйте вместо этого следующий код:

var bob = [10,30,50,20,8];

var foo = function(arrayOfNumbers){
  var resultObj = {
    max: 0,
    min: 0,
    average: 0,
    sum: 0
  };

  resultObj.max = Math.max.apply( null, arrayOfNumbers); // Get the max value.
  resultObj.min = Math.min.apply( null, arrayOfNumbers); // Get the min value.

  for( var i = 0; i < arrayOfNumbers.length; i++ ){
    resultObj.sum += arrayOfNumbers[ i ];
  }

  resultObj.average = sum / l;

  return resultObj;
}

// Call the function

var theResult = foo(bob);

document.getElementById('max').innerHTML = "Max value: "+theResult.max;

Вот описание изменений, которые я внес в ваш код, и почему:

  1. Iубедился, что имена ваших переменных не конфликтуют.Это должно помочь вам увидеть, где каждая переменная используется и как они связаны друг с другом.bob содержит ваши номера.Вы передаете bob функции foo().Внутри foo номера теперь называются v.Это означает, что у вас также могут быть frank, joe и tom, и вы можете назвать foo на всех них.arrayOfNumbers является локальной переменной foo.

  2. Я изменил resultArr с массива на объект.Объект имеет больше смысла, потому что вы можете назначать метки значениям.Таким образом, теперь максимальное значение можно получить по .max вместо [0].Я также показал, как объект результата называется resultObj внутри foo, но получает присвоение theResult за пределами foo.Затем вы можете обратиться к theResult.min, theResult.max и theResult.average.

  3. Я немного прибрался, исправив отступ и переместив функцию наверх, чтобы улучшить читаемость.

Надеюсь, это поможет вам увидеть, что здесь происходит!

0 голосов
/ 22 января 2011
document.getElementById('max').innerHTML = resultArr[2];

Или

<div id="max">
    <script>document.write(resultArr[2]);</script>
</div>

Или (JQuery)

$('#max').val(resultArr[2]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...