Javascript 编写程序以查找数组中的最大值

Javascript 编写程序以查找数组中的最大值,javascript,Javascript,可能重复: var检验=[-42,0,8]; var最大值=-无穷大; 对于(i=0;i最大值) 警惕(‘是!’); 最大=试验[i]; 其他的 警惕(“不是!”);} 警报(“最大元素为:“+最大”); 我正试图编写一个程序来查找数组中的最大数,但我的代码不起作用。有什么帮助吗?这有点聪明,但非常简洁,效果很好 只需调用并传递数组作为参数 var maxValue = Math.max.apply(null, arr); .这有点聪明,但相当简洁,效果很好 只需调用并传递数组作为参数 v

可能重复:

var检验=[-42,0,8];
var最大值=-无穷大;
对于(i=0;i最大值)
警惕(‘是!’);
最大=试验[i];
其他的
警惕(“不是!”);}
警报(“最大元素为:“+最大”);

我正试图编写一个程序来查找数组中的最大数,但我的代码不起作用。有什么帮助吗?

这有点聪明,但非常简洁,效果很好

只需调用并传递数组作为参数

var maxValue = Math.max.apply(null, arr);

.

这有点聪明,但相当简洁,效果很好

只需调用并传递数组作为参数

var maxValue = Math.max.apply(null, arr);

.

你已经被“牙套太少”的错误咬到了:

如果你解决了这个问题

当然,您可以使用
Math.Max
更轻松地完成此操作,如下示例所示:

function getMaxOfArray(numArray) {
  return Math.max.apply(null, numArray);
}

您已被“牙套太少”错误所困扰:

如果你解决了这个问题

当然,您可以使用
Math.Max
更轻松地完成此操作,如下示例所示:

function getMaxOfArray(numArray) {
  return Math.max.apply(null, numArray);
}

虽然您应该听@alex,但如果没有
Math.max
,并且您想要编写C风格的代码,您应该这样做:

var test = [-42, 0, 8];

var biggest = -Infinity;

for(var i = 0; i < test.length; ++i)
    if(test[i] > biggest)
        biggest = test[i];

alert("The biggest element is:" + biggest);
var检验=[-42,0,8];
var最大值=-无穷大;
对于(变量i=0;i最大值)
最大=试验[i];
警报(“最大元素为:“+最大”);

虽然你应该听@alex,但如果没有
Math.max
,并且你想编写C风格的代码,你应该这样做:

var test = [-42, 0, 8];

var biggest = -Infinity;

for(var i = 0; i < test.length; ++i)
    if(test[i] > biggest)
        biggest = test[i];

alert("The biggest element is:" + biggest);
var检验=[-42,0,8];
var最大值=-无穷大;
对于(变量i=0;i最大值)
最大=试验[i];
警报(“最大元素为:“+最大”);

替代解决方案

function nsort(a,b){
    return a - b;
}
var test = [-42, 0, 8, 3, 15, 12],
    max  = test.sort(nsort).pop(); // 15

演示:

替代解决方案

function nsort(a,b){
    return a - b;
}
var test = [-42, 0, 8, 3, 15, 12],
    max  = test.sort(nsort).pop(); // 15

演示:

ECMAScript第5版为数组引入了一些高阶函数——耶

一个是(也称为):

因此,这可以通过以下方式解决:

var arr = [-42, 0, 8]
var res = arr.reduce(function (prev,cur) {
   return cur > prev ? cur : prev
}, -Infinity)
res // 8
在这种情况下,不如将数组作为参数应用于
Math.max
,但高阶函数可以很好地添加到“工具箱”;-)考虑轻微修改,找到数组中最长的字符串:

var arr = ["Hello", "World!!!", "Wut?"]
var res = arr.reduce(function (prev,cur) {
   return cur.length > prev.length ? cur : prev
}, "")
res // "World!!!"
Math.max
Array.sort
和index/pop;-)试试看

快乐编码


虽然上述内容适用于第5版,但可以为ECMAScript第3版(又名JavaScript 1.5)编写一个简单的reduce函数,并且等效功能是许多库的一部分:

function reduce (arr, fn, v) {
  for (var i = 0; i < arr.length; i++) {
    v = fn(v, arr[i])
  }
  return v
}
// used as:
reduce(arr, function (prev,cur) { ... }, initValue)
功能减少(arr、fn、v){
对于(变量i=0;i

(这可以添加到数组原型中,但我认为用内核原型进行比较相当丑陋)。

< p> ECMAScript第五版介绍了数组的一些高阶函数yay. 一个是(也称为):

因此,这可以通过以下方式解决:

var arr = [-42, 0, 8]
var res = arr.reduce(function (prev,cur) {
   return cur > prev ? cur : prev
}, -Infinity)
res // 8
在这种情况下,不如将数组作为参数应用于
Math.max
,但高阶函数可以很好地添加到“工具箱”;-)考虑轻微修改,找到数组中最长的字符串:

var arr = ["Hello", "World!!!", "Wut?"]
var res = arr.reduce(function (prev,cur) {
   return cur.length > prev.length ? cur : prev
}, "")
res // "World!!!"
Math.max
Array.sort
和index/pop;-)试试看

快乐编码


虽然上述内容适用于第5版,但可以为ECMAScript第3版(又名JavaScript 1.5)编写一个简单的reduce函数,并且等效功能是许多库的一部分:

function reduce (arr, fn, v) {
  for (var i = 0; i < arr.length; i++) {
    v = fn(v, arr[i])
  }
  return v
}
// used as:
reduce(arr, function (prev,cur) { ... }, initValue)
功能减少(arr、fn、v){
对于(变量i=0;i

(这可以被添加到数组原型中,但是我考虑用内核原型进行相当丑陋的处理)。

@ Davids0.你打了我6秒。code>test.sort()[test.length-1]
,如果你是舒尔的话,这是另一个主意。@KooiInc:pop()
怎么样?@alex:。然后对最小值进行
unshift()
。@KooiInc:
sort()
首先转换为字符串,然后按字典顺序进行排序,这样就不会得到数字排序@darvids0n你以6秒的优势击败了我。:)
test.sort()[test.length-1]
,如果你是舒尔的话,这是另一个主意。@KooiInc:pop()怎么样?@alex:。然后对最小值进行
unshift()
。@KooiInc:
sort()
首先转换为字符串,然后按字典顺序进行排序,这样就不会得到数字排序。这就是为什么我总是需要条件句上的大括号+1@pst:对我来说,这是一个“是的,我知道你可以不用大括号来做这件事,但是闭嘴,无论如何都要用大括号”的问题。这就是为什么我总是要求条件句用大括号+1@pst:对我来说,这也是一个“是的,我知道你不用大括号也能做到,但是闭嘴,还是用吧”的问题。在数组中使用
道具
。。。。一般说来,是吗?(我不是什么JavaScript程序员。)@muntoo:它将迭代对象中的所有可枚举属性,包括原型链。通常,在处理
数组时,您只需要数字索引,这是非常不利的。@alex那么您什么时候会使用
foreach()
?@muntoo
Array.foreach
在ECMAScript ed5中,
for(i=0;在数组中使用
prop
…通常是非常棒的。@pst-Huh?(我不是一个很好的JavaScript程序员。)@muntoo:它将迭代对象中的所有可枚举属性,包括原型链。通常在处理
数组时不太合适,您只需要数字索引。@alex那么您什么时候在ECMAScript ed5中使用
foreach()
?@muntoo
数组.foreach
,用于(i=0;i+1表示提及实现此目的的现代方法。+1表示提及实现此目的的现代方法。