You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将获取最长字符串数组的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:10:51