我对编程非常陌生,我正在尝试解决一个问题,我必须将华氏温度值数组转换为摄氏温度。虽然我不太确定从.map
开始的地方,但是我非常感谢您在理解如何解决此问题方面有所帮助。
这是我尝试解决测试问题的第一次尝试。
function convertTemps(array) {
return array * (9/5) + 32
}
这些是我要解决的问题
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])
})
})
答案 0 :(得分:4)
您编写的是应该针对数组中的每个项目运行 的函数,通常称为回调或谓词 。您所要做的就是将确切的函数移入到Array.map()
中。
请注意,您的°F -> °C
公式不正确。正确的公式是(°F − 32) × 5/9 = °C
这是一个稍微冗长的方法,它演示了将函数移入 .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);
如果您喜欢ES6:
const convertTemps = (array) => array.map(temp => (temp-32) * 5/9);
const array = [23, 140, 212, 41];
const result = convertTemps(array);
console.log(result);
答案 1 :(得分:1)
如果可以使用es6(箭头功能)
function convertTemps(array) {
return array.map(element => element * (9/5) + 32);
}
答案 2 :(得分:1)
Map很简单,可以传递一个内联函数来描述如何处理数组中的每个项目,或者定义一个单独的函数并将其传递给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)
}