JavaScript数组按数值排序功能不生效问题咨询
问题原因
- 排序函数
datoSamanlikning读取对象属性时大小写不匹配:你往oppdrag数组中推入的对象键名为大写开头的Hopp,但排序函数里写的是全小写的hopp,读取到的值为undefined,转为数字后是NaN,导致排序逻辑完全失效。 - 可选优化:数值转换不需要用
new Number构造函数,直接用Number()或者一元加号+转换即可,避免不必要的对象包装。
修复方案
直接替换原有datoSamanlikning函数即可:
// sortere synkande på dato function datoSamanlikning(a,b){ var datoA = Number(a.Hopp), datoB = Number(b.Hopp); return datoB - datoA; }
附加优化建议
你当前代码中visTabell函数的else逻辑写在循环内部不合理,应该把判断提到循环外,避免每次遍历都重复判断数组长度,优化后代码:
// Vise tabell over oppdrag function visTabell() { oppdragsTabell.innerHTML = ""; if (oppdrag.length > 0) { for(var el of oppdrag){ oppdragsTabell.innerHTML += "<tr><td>" + el.Namn + "</td>" + "<td>" + el.Hopp + "</td> </tr>"; } } else { oppdragsTabell.innerHTML = "unvisible"; } }
内容的提问来源于stack exchange,提问作者HolyLays
相关产品推荐
相关产品推荐

