JavaScript获取数组对象value最小值时出现输出误判的技术求助
解决数组中value字段最小值获取的问题
你的代码存在两个问题导致异常输出:
console.log放在循环内部,每遍历一个元素就输出一次当前的alzehemersmin,所以会看到多次输出;data.value是字符串类型,第一次赋值后alzehemersmin变成字符串,后续字符串比较会按字符ASCII码顺序判断(比如"10.267346"的首字符'1' ASCII码小于'9',会被误判为更小的值),导致错误覆盖最小值。
修正后的for...of循环代码
const AlzheimerData = [ { "location": "world", "year": "2000", "value": "9.557819" }, { "location": "world", "year": "2001", "value": "10.267346" }, { "location": "world", "year": "2002", "value": "10.8148" }, { "location": "world", "year": "2003", "value": "11.329527" } ] // 初始化最小值为数字类型的最大值 let alzheimerMin = Number.MAX_VALUE; for (const data of AlzheimerData) { // 将value转为数字后再比较 const currentValue = Number(data.value); if (currentValue < alzheimerMin) { alzheimerMin = currentValue; } } // 循环结束后再输出最终最小值 console.log(alzheimerMin); // 输出 9.557819
更简洁的reduce写法
如果不想用循环,也可以用数组的reduce方法直接计算最小值:
const minValue = AlzheimerData.reduce((min, item) => { const current = Number(item.value); return current < min ? current : min; }, Number.MAX_VALUE); console.log(minValue); // 输出 9.557819
内容的提问来源于stack exchange,提问作者Milan
相关产品推荐
相关产品推荐

