2011-01-22 5 views
0

j'ai un code je besoin d'aide:Obtenez la valeur d'un tableau

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. 

Cette fonction retourne un tableau avec max, min et des valeurs moyennes. Comment puis-je choisir quelle valeur imprimer dans différents divs?

Répondre

1

Vous avez déjà la réponse:

var resultArr = foo(bob); 
document.getElementById('max').innerHTML = resultArr[2]; 
document.getElementById('min').innerHTML = resultArr[1]; 
// etc 
0
document.getElementById('max').innerHTML = resultArr[2]; 

Ou

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

Or (JQuery)

$('#max').val(resultArr[2]); 
+0

J'ai essayé ceci. mais Firebug me donne cette erreur: resultArr n'est pas défini document.getElementById ('max'). innerHTML = "Valeur max:" + resultArr [2]; – Ferarri

+0

@Ferrari, vous devez faire 'resultArr = foo (bob);' first – Ben

+0

@Ferrari resultArr est une variable contenant le résultat de la fonction foo.Vous devez d'abord initialiser cette variable: var resultArr = foo ([10,30,50,20,8]); ou quel tableau avez-vous besoin de traiter –

0

Vous avez un certain nombre de choses confus ici. Vous avez une variable globale bob et vous avez également bob comme argument de fonction. En outre, vous avez un tableau de résultats, qui local à la foo fonction est appelé resultArr, mais vous ne l'attribuez nulle part lorsque vous appelez la fonction foo.

Essayez plutôt le code suivant:

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; 

Voici une description des changements que j'ai fait à votre code, et pourquoi:

  1. Je me suis assuré que les noms de vos variables n » t conflit. Cela devrait vous aider à voir où chaque variable est utilisée et comment ils se rapportent les uns aux autres. bob contient vos numéros. Vous transmettez bob à la fonction foo(). À l'intérieur foo, les numéros sont maintenant appelés v. Cela signifie que vous pouvez également avoir frank, joe et tom, et vous pouvez appeler le foo sur chacun d'eux. arrayOfNumbers est une variable locale à foo. J'ai changé resultArr d'un tableau à un objet. Un objet a plus de sens car vous pouvez affecter des étiquettes aux valeurs. Alors maintenant, la valeur maximale est accessible au .max au lieu de [0]. J'ai également montré comment l'objet résultat est appelé resultObjà l'intérieurfoo mais est affecté à theResulten dehors de foo. Vous pouvez ensuite faire référence à theResult.min, theResult.max et theResult.average.

  2. J'ai nettoyé un peu, en fixant l'indentation et en déplaçant la fonction vers le haut, pour augmenter la lisibilité.

J'espère que cela vous aidera à voir ce qui se passe ici!