Ma fonction prend 2 paramètres entiers et renvoie les nombres entre ces deux paramètres. Je ne peux pas convertir les nombres affichés dans un tableau.

Comme je suis censé créer une fonction de tableau qui prend deux nombres et renvoie un tableau rempli de tous les nombres entre le nombre donné: buildArray (5, 10) devrait retourner [5, 6, 7, 8, 9, 10].

J'ai essayé d'utiliser split pour convertir les valeurs en un tableau mais j'ai échoué plusieurs fois.

Mon code imprime chaque valeur séparément alors que j'ai besoin que les valeurs soient affichées dans un tableau.

function buildArray(a, b) {
  for (var i = 0; i <= b; i++) {
    i = a;
    console.log(a);
    a = a + 1;
  }
}
console.log(buildArray(5, 10));
-6
Michael Joe 27 janv. 2019 à 20:00

3 réponses

Meilleure réponse

Voici la version la plus simple utilisant votre ligne de pensée originale

La mise en œuvre d'une fonction de plage peut être plus complexe que cela, mais puisque cela fonctionne, je le suggère pour l'instant

function buildArray(a, b) {
  var arr = [];
  for (var i = a; i <= b; i++) {
    arr.push(i);
  }
  return arr;
}
console.log(buildArray(5, 10));
3
mplungjan 27 janv. 2019 à 17:17

Vous pouvez construire un nouveau tableau rempli avec zeros de la longueur dont vous avez besoin, puis utiliser map() pour définir les valeurs. J'ai mis à jour vers une version généralisée pour accepter d'autres types de gammes.

function buildArray(a, b)
{
    let n = Math.abs(b - a);
    return Array(n + 1).fill(0).map((x, idx) => a + ((b >= a) ? idx : -idx));
}

console.log(JSON.stringify(buildArray(5, 10)));
console.log(JSON.stringify(buildArray(12, 3)));
console.log(JSON.stringify(buildArray(1, -2)));
console.log(JSON.stringify(buildArray(-1, -1)));
2
Shidersz 27 janv. 2019 à 17:47

Essayez ce qui suit (en utilisant Array.from):

function buildArray(min, max) {
  return Array.from({ length: max - min + 1 }, (_, i) => min + i);
}

console.log(buildArray(5, 10));
1
kevinji 27 janv. 2019 à 17:12