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

问题描述 投票:0回答:3

如果我们得到类似的东西

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

如果发生这种情况,如何让它从头到尾返回数字。

javascript arrays sorting max
3个回答
0
投票

要回答标题中的问题:

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

答案是,没有。 Math.max()不对数组起作用。

您可以通过将项目作为参数传播到max()来传递数组:

Math.max(...[1,2,3]) // 3

或者正如你所见,使用apply()

Math.max.apply(Math, [1,2,3]) // 3

如果问题更多:

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

答案是,它返回这个数字:

const a = [5, 5, 5, 5, 3, 2]
const max = Math.max(...a)

console.log(max) // 5

这个问题令人困惑:

如果发生这种情况,如何让它从头到尾返回数字。

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

a.sort() // [2, 3, 5, 5, 5, 5]

你想删除欺骗?从[5, 5, 5, 5, 3, 2][2, 3, 5]

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

你能澄清一下你的问题吗?


0
投票

最好的方法是:

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不需要作为第一个参数传入。

有关工作示例,请参阅以下内容:

https://jsfiddle.net/fx5ut2mm/


-1
投票

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

var a = [5,5,5,5,3,2],
    m = Math.max(...a),
    f = a.filter(e => e == m);
document.write("<pre>" + JSON.stringify(f) + "</pre>");
© www.soinside.com 2019 - 2024. All rights reserved.