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

为何对原数组slice得到的子数组调用Math.max返回NaN?

问题原因与解决办法

你遇到的核心问题是对slice方法的返回值理解有误:

  • arr.slice(0, 1)返回的不是单个子数组,而是一个包含目标子数组的新数组。从你的测试结果就能验证这一点:arr1.length为1,arr1[0]才是你真正需要的[4, 5, 1, 3]。

当你调用Math.max(...arr1)时,展开的是arr1的元素——也就是那个子数组本身,而Math.max只能接收数字类型的参数,无法解析数组,因此返回NaN。

解决方法

  1. 直接获取子数组:如果只是取第一个子数组,不用slice,直接通过索引访问更简单:
let arr = [[4, 5, 1, 3], [13, 27, 18, 26]];
let arr1 = arr[0];
Math.max(...arr1); // 输出5
  1. 修正slice的使用:如果一定要用slice,需要额外取索引0拿到子数组:
let arr = [[4, 5, 1, 3], [13, 27, 18, 26]];
let arr1 = arr.slice(0, 1)[0];
Math.max(...arr1); // 输出5
  1. 批量处理所有子数组:如果要获取原数组中每个子数组的最大值,可以用map遍历:
let arr = [[4, 5, 1, 3], [13, 27, 18, 26]];
let maxValues = arr.map(subArr => Math.max(...subArr));
console.log(maxValues); // 输出 [5, 27]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:30:40