JS使用reduce求最长单词长度结果异常及编辑器缩进问题求助
问题1:reduce计算最长字符串长度返回结果异常
错误原因
你第一次迭代判断后返回的是数字类型的长度值,而非字符串类型。后续迭代时访问longest.length,数字不存在length属性,取值为undefined,undefined和数字比较大小返回false,所以每轮都会返回当前遍历元素的长度,最终返回最后一个元素se的长度2。
修复方案
方案1:累积值保留最长字符串,最终取长度
let arr = ['howss', 'fuund', 'se'] let longestLength = arr.reduce((longest, currentWord) => longest.length > currentWord.length ? longest : currentWord , "").length console.log(longestLength) // 输出5
方案2:累积值直接存储最大长度,初始值设为0
let arr = ['howss', 'fuund', 'se'] let longestLength = arr.reduce((maxLen, currentWord) => maxLen > currentWord.length ? maxLen : currentWord.length , 0) console.log(longestLength) // 输出5
问题2:编辑器行缩进对齐调整
可按以下方式操作:
- 自动格式化:选中对应代码块,VS Code按
Shift+Alt+F(Windows)/Shift+Option+F(Mac),WebStorm按Ctrl+Alt+L(Windows)/Cmd+Option+L(Mac)触发自动格式化,通常会自动修正行归属和缩进。 - 手动调整:如果自动格式化不符合预期,可选中第97行,按
Ctrl+[减少缩进、Ctrl+]增加缩进,手动调整到和第92行对齐即可。如果要避免后续编辑器再次将其识别为第93行的一部分,可给reduce的回调函数体加上大括号包裹,明确块边界。
内容的提问来源于stack exchange,提问作者nubprog
相关产品推荐
相关产品推荐

