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])
})
})
3 réponses
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);
Si vous pouvez utiliser es6 (fonctions fléchées)
function convertTemps(array) {
return array.map(element => element * (9/5) + 32);
}
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)
}
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.