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 作为响应而不是平均值。我在这里做错了什么?有人可以提供线索吗?
这里的很多解决方案都非常好,但是也存在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)
看起来这里有几个拼写错误,代码不应该运行。