JavaScript中如何返回首元素为最大值的子数组?
筛选二维数组中首元素最大的子数组
给定二维数组 let ar = [[1,24], [2, 6]],需求是返回首元素为所有子数组首元素最大值的子数组(预期结果 [2,6])。你之前用 map 配合 Math.max 的写法只能拿到每个子数组的最大值,无法直接获取目标子数组,以下是两种可行的解决方案:
方案一:使用 reduce 直接遍历对比
reduce 可以在遍历过程中直接记录首元素最大的子数组,一步到位:
let ar = [[1,24], [2, 6]]; const targetArr = ar.reduce((maxArr, currentArr) => { return currentArr[0] > maxArr[0] ? currentArr : maxArr; }, ar[0]); console.log(targetArr); // 输出 [2,6]
逻辑说明:以数组第一个元素为初始对比基准,逐个遍历后续子数组,每次对比当前子数组的首元素与基准子数组的首元素,保留更大的那个子数组,最终得到结果。
方案二:先找最大值再筛选
如果需要更清晰的分步逻辑,可以先提取所有首元素的最大值,再筛选对应子数组:
let ar = [[1,24], [2, 6]]; // 提取所有子数组的首元素并找出最大值 const maxFirstElement = Math.max(...ar.map(row => row[0])); // 找到第一个首元素等于最大值的子数组 const targetArr = ar.find(row => row[0] === maxFirstElement); console.log(targetArr); // 输出 [2,6]
补充说明:如果存在多个首元素同为最大值的子数组,find 只会返回第一个匹配项;若需要获取所有符合条件的子数组,可将 find 替换为 filter。
内容的提问来源于stack exchange,提问作者onit
相关产品推荐
相关产品推荐

