JS如何实现打印数组所有最长字符串 现有代码仅输出前两个如何修复
代码问题分析
- 存储结果用了字符串类型,直接拼接符合条件的字符串,无法返回独立的最长字符串集合
- 未提前统计数组的最大字符串长度,判断时以拼接后的字符串长度作为基准,基准值会随拼接操作持续变大,导致后续原本符合最大长度的字符串无法被匹配
实现逻辑
先遍历数组得到最长字符串的长度,再二次遍历筛选所有长度等于最大长度的字符串即可。
可运行修正代码
let printLongestStrings = (array) => { // 计算数组中字符串的最大长度 const maxLength = Math.max(...array.map(str => str.length)); // 筛选所有长度等于最大长度的字符串 return array.filter(str => str.length === maxLength); }; console.log(printLongestStrings(["time","ticking","bomb","countup"])); // 输出:['ticking', 'countup']
基础循环兼容版本(不依赖ES6新特性)
let printLongestStrings = (array) => { let maxLength = 0; // 第一次遍历找最大长度 for (let i = 0; i < array.length; i++) { if (array[i].length > maxLength) { maxLength = array[i].length; } } const result = []; // 第二次遍历收集符合条件的字符串 for (let i = 0; i < array.length; i++) { if (array[i].length === maxLength) { result.push(array[i]); } } return result; }; console.log(printLongestStrings(["time","ticking","bomb","countup"]));
内容的提问来源于stack exchange,提问作者Royal_kid
相关产品推荐
相关产品推荐

