如何将获取最长字符串数组的JavaScript代码转为Dart实现?
Dart实现方案
需求回顾
给定一个非空字符串数组inputArray,返回包含所有最长字符串的新数组,且保留原输入顺序:
- 示例:输入
["aba", "aa", "ad", "vcd", "aba"],输出["aba", "vcd", "aba"] - 约束条件:
- 数组长度范围:1 ≤ inputArray.length ≤ 10
- 单个字符串长度范围:1 ≤ inputArray[i].length ≤ 10
实现代码
方式一(无需额外导入)
List<String> longestStrings(List<String> inputArray) { // 计算数组中字符串的最大长度 int maxLength = inputArray.map((s) => s.length).reduce((a, b) => a > b ? a : b); // 过滤出所有长度等于最大长度的字符串并转为List return inputArray.where((s) => s.length == maxLength).toList(); }
方式二(导入dart:math简化代码)
import 'dart:math'; List<String> longestStrings(List<String> inputArray) { int maxLength = inputArray.map((s) => s.length).reduce(max); return inputArray.where((s) => s.length == maxLength).toList(); }
代码说明
- 获取最大长度:通过
map将每个字符串转换为其长度,再通过reduce遍历所有长度值,找出最大值 - 筛选结果:使用
where方法过滤出长度等于最大值的字符串,最后调用toList()将Iterable转为List,同时保留原数组的元素顺序 - 两种实现逻辑一致,方式二借助
dart:math的max函数让代码更简洁
内容的提问来源于stack exchange,提问作者M.Shahzad
相关产品推荐
相关产品推荐

