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

如何获取哈希表中最长数组的长度及其对应键?

获取哈希表中最长数组的对应键

当然可行!你可以通过稍微调整代码,同时追踪最长数组对应的键和长度,这里有两种常用的实现方式:

方式一:用reduce直接找到目标键和长度

这种方法一步到位,遍历哈希表的键值对并记录当前最长的那一项:

var hash = {};
hash['a'] = ["a", "b", "c", "d", "e"];
hash['b'] = ["a", "b", "c"];
hash['k'] = ["q", "b"];

const longestEntry = Object.entries(hash).reduce((currentMax, [key, arr]) => {
  // 比较当前数组长度和记录的最大长度,更新结果
  return arr.length > currentMax.length ? { key, length: arr.length } : currentMax;
}, { key: '', length: 0 });

console.log(`最长数组的键:${longestEntry.key}`); // 输出 'a'
console.log(`最长数组的长度:${longestEntry.length}`); // 输出 5

解释:

  • Object.entries(hash)会把哈希表转换成[[键, 值数组], ...]的二维数组,方便我们同时获取键和对应的数组。
  • reduce方法从初始值{ key: '', length: 0 }开始遍历,每一步都比较当前数组的长度和记录的最大长度,保留更长的那一项的键和长度。

方式二:先找最大长度,再筛选对应键

如果需要处理多个键对应相同最长数组长度的场景(比如哈希表里有两个键的数组长度都是5),这种方法会更灵活:

var hash = {};
hash['a'] = ["a", "b", "c", "d", "e"];
hash['b'] = ["a", "b", "c"];
hash['k'] = ["q", "b"];

// 第一步:计算所有数组的最大长度
const maxLength = Math.max(...Object.values(hash).map(arr => arr.length));
// 第二步:筛选出所有数组长度等于maxLength的键
const longestKeys = Object.keys(hash).filter(key => hash[key].length === maxLength);

console.log(`最长数组的长度:${maxLength}`); // 输出 5
console.log(`对应键列表:${longestKeys}`); // 输出 ['a'](如果有多个键会返回数组)

解释:

  • 先通过Object.values(hash).map(...)拿到所有数组的长度,再用Math.max找到最大值。
  • 然后用filter遍历所有键,把数组长度等于最大值的键收集起来,得到的是一个键数组,方便处理多个最长项的情况。

这两种方法都能满足你的需求,你可以根据实际场景选择合适的方式~

内容的提问来源于stack exchange,提问作者whitebear

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:22:43