Math.max里用数组就报Nan

var arr=[1,2,3,45,66]
var num =Math.max(arr.join(','))
alert(num)

为什么用了arr.join(',')后,弹出的num就是Nan呢?
max里面应该是放的数字加逗号吧

阅读 3.2k
2 个回答

你是想用Math.max找出数组中最大的数吧
应该这样写

var arr = [1,2,3,45,66]
var num = Math.max.apply( null, arr );
console.log( num );

apply的第二个参数是参数数组

如果按照你那样写,用arr.join(','),得到的是字符串,就相当于

Math.max( '1,2,3,45,66' );

里面是字符串,肯定是不对的

如果坚持要用字符串拼接参数,可以用eval

var arr = [1,2,3,45,66]
var num = eval( 'Math.max(' + arr.join( ',' ) + ')' );
console.log( num );    // 66

再补充一个ES6的写法

var arr = [1,2,3,45,66]
var num = Math.max( ...arr );
console.log( num );    // 66
var arr=[1,2,3,45,66]
var num = Math.max(...arr)
//66
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题