如果数组有几个相等大的数字,max()函数在javascript中做什么

如果数组有几个相等大的数字,max()函数在javascript中做什么,javascript,arrays,sorting,max,Javascript,Arrays,Sorting,Max,如果我们得到像 array=[5,5,5,5,3,2]; return Math.max.Apply(Math,array); 如果发生这种情况,如何让它从第一个返回到最后一个数字。最好的方法是: var a = [5,5,5,5,3,2]; var largest = Math.max.apply(null,a) var filtered = a.filter(function(item) { item === largest }); 其中筛选的将包含所有最大的元素 在@Clark

如果我们得到像

array=[5,5,5,5,3,2];
return Math.max.Apply(Math,array);

如果发生这种情况,如何让它从第一个返回到最后一个数字。

最好的方法是:

var a = [5,5,5,5,3,2];
var largest = Math.max.apply(null,a)
var filtered = a.filter(function(item) {
    item === largest
});
其中筛选的将包含所有最大的元素

在@Clarkie的例子中,他给Math.max打电话的频率比需要的要高。 在Dan和Clarkie的示例中,他们都将Apply大写,这是不正确的,正确的调用函数是
Math.max.Apply
,Math不需要作为第一个参数传入

请参见以下工作示例:


修改@Clarkie的好主意。我们可以把它归结为

var a=[5,5,5,3,2],
m=数学最大值(…a),
f=a.filter(e=>e==m);

document.write(“+JSON.stringify(f)+”)回答标题中的问题:

Math.max(...[1,2,3]) // 3
如果数组中有几个相等的值,max()函数在javascript中做什么 大量

答案是,没有。max()不作用于数组

通过将项目作为参数分散到
max()
,可以传递数组:

或者如您所见,使用
apply()

如果问题更多:

当给定多个相同的最大值时,Math.max()会做什么

答案是,它返回该数字:

a.sort() // [2, 3, 5, 5, 5, 5]
这个问题令人困惑:

如果发生这种情况,我如何让它从第一个返回到最后一个数字

你想让它返回一个排序数组吗?从
[5,5,5,3,2]
[2,3,5,5,5,5]

Array.from(new Set(a)) // [2, 3, 5]
你想删除复制品吗?从
[5,5,5,3,2]
[2,3,5]

Array.from(new Set(a)) // [2, 3, 5]

你能澄清你的问题吗?

函数
Math.max()
返回一个数字。若要返回一个等于最大值的数字列表,则必须编写自己的函数。绝对并没有迹象表明@Ignacio Bricchi正在使用ES2015寻找解决方案,也并没有迹象表明他希望将结果写入文档。这个答案所做的假设会使解决方案复杂化,因此会使他从试图解决的简单问题中解脱出来。@Sheeldot你一定非常困惑。你的代码包括箭头函数和常量声明。我一定是这样,你绝对是对的!太棒了,我现在已经把代码改成了它本来应该有的样子,谢谢@Redu
Array.from(new Set(a)) // [2, 3, 5]