如何使用Map编写一个将Farenheit值数组转换为Celcius的函数?

时间:2019-06-20 18:12:06

标签: javascript

我对编程非常陌生,我正在尝试解决一个问题,我必须将华氏温度值数组转换为摄氏温度。虽然我不太确定从.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])
  })
})

3 个答案:

答案 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)
}