javascript - 在包含 NaN 值的对象数组中查找最大值
问题描述
我有一个对象数组,我想获得最大值prevalence
。
我试试这段代码:
// max of selected vaccine
var ex = [{"name": "a", "prevalence": "NaN"},
{"name": "a", "prevalence": "5"},
{"name": "b", "prevalence": "0"},
{"name": "a", "prevalence": "NaN"},
{"name": "c", "prevalence": "100"},
{"name": "c", "prevalence": "20"},
{"name": "a", "prevalence": "3"}];
console.log('ex:', ex);
var maxPrevalence = d3.max(ex, function(d) {
if(!isNaN(d.prevalence)) {
return d.prevalence;
}
});
console.log('\nmaxPrevalence:', maxPrevalence);
<script src='https://d3js.org/d3.v5.js' charset='utf-8'></script>
但结果5
并非如此100
。
我不必使用 d3 函数,即使是纯 javascript 也可以。
解决方案
您'NaN'
的 s 是字符串,而不是实际NaN
的 s,但无论如何,您可以在测试时reduce
进入:Math.max
prevalence
var ex=[{"name":"a","prevalence":"NaN"},{"name":"a","prevalence":"5"},{"name":"b","prevalence":"0"},{"name":"a","prevalence":"NaN"},{"name":"c","prevalence":"100"},{"name":"c","prevalence":"20"},{"name":"a","prevalence":"3"}];
const max = Math.max(...ex.reduce(
(accum, { prevalence }) =>
isNaN(prevalence) ? accum : [...accum, prevalence],
[])
);
console.log(max);
推荐阅读
- intellij-idea - Intellij 全局搜索仅返回 Java 文件的结果
- substitution - 不知道位置的最大值子部分
- javascript - 什么时候需要返回嵌套的 Promise?
- php - 在这种情况下如何验证 Recaptcha?
- php - 递归转换为多维数组
- c++ - 是否有等效于 slmgr.vbs /skms 的 C++/Winapi
- postgresql - 从 postgresql 中的日/月中提取年份并检查日期是否为一年中的第一个和/或最后一个
- python - 从 Python 文件构建 EXE 文件(不是同一个普通问题 - 请参阅)
- ios - 动态物理体最终被推离屏幕
- asp.net-mvc - 获取多组单选按钮asp.net mvc 5的选定值