Je dois définir la valeur de chaque élément de ce tableau, en comptant.

Ainsi, par exemple, chemin [0] .value = 1, chemin [1] .value = 2 etc ...

EDIT: Je recherche le moyen le plus efficace de le faire.

Je pense qu'une boucle for est la meilleure façon, mais je veux apprendre d'autres façons. Peut-on le faire avec la méthode map () ou forEach ()? Qu'en est-il d'un for ... in statement? J'aimerais le faire avec du JS pur, mais si vous pouvez m'apprendre une meilleure façon avec jQuery, je serais intéressé de l'apprendre aussi.

Merci d'avance.

function Cell(x,y){
    this.xCoordinate = x;
    this.yCoordinate = y;
    this.value;
}
var path = [new Cell(0,0), new Cell(0,1), new Cell(0,2)];
5
fatblacklip 9 mars 2016 à 01:29

4 réponses

Meilleure réponse

Vous pouvez utiliser une boucle for ou forEach:

for(var i=0; i<path.length; ++i)
  path[i].value = i+1;
path.forEach(function(cell, i) {
  cell.value = i + 1;
});

Mieux vaut éviter for...in à cause de Pourquoi l'utilisation de "for ... in" avec l'itération de tableau est-elle une si mauvaise idée?.

4
Community 23 mai 2017 à 12:07
<html>
<body>
<p id="demo"></p>
<script>
function Cell(x,y){
    this.xCoordinate = x;
    this.yCoordinate = y;
    this.value;
}
function setValues(element, index, array){
array[index].value = index+1;
}
var path = [new Cell(0,0), new Cell(0,1), new Cell(0,2)];
path.forEach(setValues);
document.getElementById("demo").innerHTML = path[2].value;
</script>
</body>
</html>
0
Moises Quintero Orea 8 mars 2016 à 23:43

Si vous avez un tableau existant, vous pouvez utiliser la carte.

var path = [0,1,2].map( x => new Cell(0, x))

Ou muter

path = path.map( x => {
  x.value = x.yCoordinate - 1
  return x 
}) 
0
Fresheyeball 8 mars 2016 à 22:49

Une simple boucle for devrait fonctionner:

var path = [],
    len = 10;

for (
  var idx = 0;
  idx < len;
  path.push(new Cell(0,++idx))
)
0
Malk 8 mars 2016 à 22:42