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

如何在JavaScript中返回二维数组中含最大值(索引1)的元素?

如何从二维数组中返回包含最大值的元素?

给定如下二维数组,需要返回包含最大值的元素:

let ar = [["finalOrderData",1],["finalFabricData",3],["finalDecorationData",3],["finalHtData",3]]

预期结果

["finalFabricData",3]

我尝试了以下函数,但它仅返回数值本身:

function getMaxOf2DIndex(arr, idx) {
  return Math.max.apply(null, arr.map(function (e) { return e[idx] }))
}

解决方案

你的函数只能获取到最大值的数值,要返回对应的完整元素,需要结合最大值查找和元素匹配逻辑,以下是两种实用的实现方式:

方法一:分步实现(逻辑清晰)

先获取指定索引的最大值,再遍历数组找到第一个包含该最大值的元素:

function getMaxElement(arr, idx) {
  // 提取指定索引的所有值并获取最大值
  const maxValue = Math.max(...arr.map(e => e[idx]));
  // 找到第一个匹配最大值的元素
  return arr.find(e => e[idx] === maxValue);
}

// 调用示例
let ar = [["finalOrderData",1],["finalFabricData",3],["finalDecorationData",3],["finalHtData",3]];
console.log(getMaxElement(ar, 1)); // 输出 ["finalFabricData",3]

方法二:一次遍历完成(性能更优)

如果数组规模较大,一次遍历可以减少计算开销,同时记录最大值和对应的元素:

function getMaxElement(arr, idx) {
  let maxValue = -Infinity;
  let maxElement = null;
  
  for (const item of arr) {
    if (item[idx] > maxValue) {
      maxValue = item[idx];
      maxElement = item;
    }
  }
  
  return maxElement;
}

// 调用示例
let ar = [["finalOrderData",1],["finalFabricData",3],["finalDecorationData",3],["finalHtData",3]];
console.log(getMaxElement(ar, 1)); // 输出 ["finalFabricData",3]

说明:以上两种方法都会返回第一个出现的最大值元素,与你的预期结果一致。如果需要返回所有包含最大值的元素,只需将find替换为filter,或在遍历过程中收集所有符合条件的元素即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:15:34