Je suis très nouveau dans la programmation et j'essaie de résoudre un problème où je dois convertir un tableau de valeurs Fahrenheit en Celsius. Bien que je ne sache pas trop par où commencer avec .map et j'apprécierais vraiment de l'aide pour comprendre comment résoudre ce problème.

C'était ma première tentative pour essayer de résoudre le problème du test.

function convertTemps(array) {
  return array * (9/5) + 32
}

Ce sont les problèmes que j'essaie de résoudre

describe('convertTemps', () => {
  it('should convert farenheit to celcius for all temperatures in the array', () => {
    expect(convertTemps([23, 140, 212, 41])).to.deep.equal([-5, 60, 100, 5])
    expect(convertTemps([-58, -22, -4, 14])).to.deep.equal([-50, -30, -20, -10])
    expect(convertTemps([104, 122, 158, 176])).to.deep.equal([40, 50, 70, 80])
  })
})
2
MortalSumo 20 juin 2019 à 21:12

3 réponses

Meilleure réponse

Ce que vous avez écrit est la fonction qui devrait s'exécuter pour chaque élément du tableau , mieux connue sous le nom de rappel ou prédicat . Tout ce que vous avez à faire est de déplacer cette fonction exacte dans un Array.map().

Notez que votre formule pour °F -> °C est incorrecte. La bonne formule est (°F − 32) × 5/9 = °C

Voici une manière légèrement verbeuse qui montre simplement le déplacement de votre fonction dans le .map:

function convertTemps(array) {
  return array.map(                // for every value in the array
    function(temp) {               // run this function
      return (temp - 32) * 5 / 9
    }
  );
}

var array = [23, 140, 212, 41];
var result = convertTemps(array);

console.log(result);

Si vous préférez ES6:

const convertTemps = (array) => array.map(temp => (temp-32) * 5/9);

const array = [23, 140, 212, 41];
const result = convertTemps(array);
console.log(result);
4
Tyler Roper 20 juin 2019 à 18:36

Si vous pouvez utiliser es6 (fonctions fléchées)

function convertTemps(array) {
    return array.map(element => element * (9/5) + 32);
}
1
Bali Balo 20 juin 2019 à 18:17

La carte est simple, soit passez une fonction inline décrivant quoi faire avec chaque élément du tableau, soit définissez une fonction distincte et passez-la dans la fonction map

//inline map
function convertTemps(array) {
  return array.map(temp => temp * (9/5) + 32)
}


//external function
function convertTemp(temp) {
  return temp * (9/5) + 32;
}

function convertTemps(array) {
  return array.map(convertTemp)
}
1
Chris Sandvik 20 juin 2019 à 18:45