2017-06-28 8 views
0

Je suis très nouveau sur Javascript et j'ai du mal à trouver une solution. J'ai eu un tableau changeant dynamiquement appelé pat. Les éléments du tableau ont les coordonnées x et y. Donc maintenant, je veux utiliser une boucle pour stocker toutes les valeurs x de tous les éléments dans un nouveau tableau appelé newArray. Et puis après rempli newArray, je souhaite obtenir la valeur maximale de celui-ci. Le problème est, que j'ai actuellement du mal à utiliser la fonction push dans le bon sens. Mon code est ci-dessous. Espérons que quelqu'un puisse aider. Merci les gars!Remplissez un tableau dans le bon sens et en tirer le maximum

for (i = 0; i < pat.length; i++) { 
    console.log(pat[i].x); 
    var newArray = pat.push[i]; 
    console.log(newArray); 
}; 

Répondre

1

Utilisez push comme ça:

var newArray = []; // create an empty array 

for (var i = 0; i < pat.length; i++) { 
    newArray.push(pat[i].x); // push the x value of the current element to the array 
}; 

var max = Math.max.apply(null, newArray); // calculate the maximum of all x values 

Une approche plus fonctionnelle en utilisant map serait:

var newArray = pat.map(obj => obj.x); 
var max = Math.max.apply(null, newArray); 

PS: Etes-vous sûr que vous voulez appeler le tableau newArray?

Modifier: ma solution pour calculer le maximum fonctionne comme ceci: Math.max renvoie la valeur la plus élevée de tous ses arguments. apply appelle Math.max avec les éléments du tableau en tant qu'arguments.

0

Vous devez décoder le tableau en dehors de la boucle for, sinon il sera re-déclaré à chaque itération. Vous pouvez déclarer le tableau avec le array literal syntaxvar arrayName = [];. Pour ajouter des éléments au tableau, vous devez utiliser la méthode arrayName.push(value). Pour trouver le plus grand nombre dans le tableau, nous devons utiliser Math cet objet intégré qui a des propriétés et des méthodes pour les constantes mathématiques et les fonctions. Nous avons besoin de seulement max méthode de ces objets, qui prend des nombres comme arguments, à partir de laquelle il renvoie le plus grand Math.max(a, b, c, d ...) alors qu'il ne prend que le nombre nous ne pouvons pas passer Array comme argument, pour ce faire, nous pouvons utiliser la méthode apply qui vient de Function.prototype.apply() il appelle une fonction avec une valeur donnée, et des arguments fournis sous la forme d'un tableau (ou d'un objet de type tableau). Voilà comment nous pouvons mettre le tableau comme argument au Math.max.apply(thisArg, [argumentsAsArray]); ou Math.max.apply(null, newArray); dans votre cas.

var newArray = []; // create an empty array outside the for loop 
for (i = 0; i < pat.length; i++){ 
    newArray.push(pat[i].x); // add new element to the array 
} 

console.log(newArray); 

var max = Math.max.apply(null, newArray); // take biggest number from the array 
console.log(max); 
+0

Bien que ce soit ma réponse à la question, les réponses au code seulement sont mal vues. Veuillez également fournir une explication à OP pour expliquer votre réponse. [Comment répondre] (https://stackoverflow.com/help/how-to-answer) – JNYRanger