如何获取class为number的div元素id的最大数值?现有写法是否最优?
现有代码的问题
- 未维护全局最大值变量:你在
forEach的回调函数内部定义largestnumber变量,每次循环都会重新初始化该变量,且每次仅传入当前单个元素的id给Math.max,没有和之前遍历到的id做对比,不仅会重复弹出多次alert,也完全无法得到所有id的最大值。 - 缺少数据类型转换:元素的id属性是字符串类型,虽然
Math.max会做隐式类型转换,但如果遇到非数字格式的id,会直接返回NaN,逻辑严谨性不足。 Math.max用法错误:Math.max的作用是接收多个数值参数,返回参数中的最大值,单次仅传入一个参数时,返回值就是这个参数本身,没有任何比较大小的作用。
该写法不仅逻辑错误,也完全不是实现需求的最优方案。
最优实现方案
可以通过数组方法链式调用完成需求,不需要手动维护最大值变量,代码简洁性和可读性都更高:
// 提取所有.number元素的id转成数字,直接计算最大值 const idList = Array.from(document.querySelectorAll('.number'), el => Number(el.id)) // 兼容无匹配元素的场景,兜底值可按业务需求调整 const largestNumber = idList.length ? Math.max(...idList) : 0 alert(`The largest number is ${largestNumber}`)
内容的提问来源于stack exchange,提问作者deki0
相关产品推荐
相关产品推荐

