Javascript 中的平均值

Eri*_*att 7 javascript function

然后我需要一个获得平均高的函数。这是我所做的:

    function getAverageHeight() {
        let total_height = 0;
        let average_height = statues.length;

        if (statues.length > 0) {
            for (let i = 0; i < statues.length; i++) {
                let statue = statues[i];

                total_height += isNaN(statues.height) ? 0 : statue.height;
            }
        average_height = (total_height / statues.length).toFixed(2);
         }
       return average_height;
       } 
Run Code Online (Sandbox Code Playgroud)

但是当我测试它时,我得到了 NaN 作为响应而不是平均值。我在这里做错了什么?有人可以提供线索吗?

Jos*_*Cho 3

这里的很多解决方案都非常好,但是也存在isNan像true和 这样的边缘情况''。先用比较安全parseInt。这是一个丢弃边缘情况并返回平均值的解决方案。

let statues = [];
function createStatue(name, city, heightInMeters) {
  statues.push({
    name,
    city,
    heightInMeters
  });
}

// create statues + edge cases inputs
createStatue("Number", "New York", 46);
createStatue("Decimal", "Florence", 5.17);
createStatue("String", "Florence", '123');
createStatue("True", "Boston", true);
createStatue("Empty", "New York City", '');


function getAverageHeight() {
  // Filter out bad cases here
  const filteredStatues = statues.filter((x) => {
    let num = parseInt(x.heightInMeters);
    return !isNaN(num);
  });

  const total = filteredStatues.reduce((acc, x) => {
    return acc+parseInt(x.heightInMeters);
  }, 0);
  return (total/filteredStatues.length).toFixed(2);
}

console.log(getAverageHeight());
Run Code Online (Sandbox Code Playgroud)

编辑:OP 提供了原始代码。仔细一看,还是有一些奇怪的地方。

heightInMeters: heightInMeters,
  isLongerThan: function (other_statue) {            
    return this.highInMeters > other_statue.hightInMeters;
Run Code Online (Sandbox Code Playgroud)

看起来这里有几个拼写错误,代码不应该运行。