JavaScript中获取数组最大值?解决索引数组取max返回NaN问题
问题分析与解决
你遇到的NaN问题是因为**Math.max()不直接接受数组作为参数**,它需要接收一系列单独的数值参数。当你直接传入数组x时,它无法将数组解析为有效的数值,因此返回NaN。
你的数组实际值
先看一下代码执行后x的结果:
const array1 = ['apple', 'orange', 'banana', 'mango', 'watermelon']; const array2 = ['apple', 'orange', 'watermelon']; const x = array2.map(item2 => array1.findIndex(item => item === item2)); console.log(x); // 输出: [0, 1, 4]
解决方案
以下几种方法可以正确获取数组的最大值:
使用扩展运算符(推荐)
用...把数组展开成单个参数传递给Math.max():console.log(Math.max(...x)); // 输出: 4使用
apply()方法
通过apply()将数组作为参数列表传入:console.log(Math.max.apply(null, x)); // 输出: 4处理可能存在的-1(可选)
如果array2中存在array1没有的元素,findIndex()会返回-1。如果需要排除这种无效索引再取最大值,可以先过滤数组:const validIndices = x.filter(idx => idx !== -1); console.log(Math.max(...validIndices)); // 仅对有效索引取最大值
内容的提问来源于stack exchange,提问作者Epple
相关产品推荐
相关产品推荐

