Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:数组中的最大值_Javascript_Arrays_Logic - Fatal编程技术网

JavaScript:数组中的最大值

JavaScript:数组中的最大值,javascript,arrays,logic,Javascript,Arrays,Logic,如果函数位于数组的第一个(arr[0])或最后一个索引(arr[arr.length-1]),则该函数仅返回最大数。如何修复逻辑错误 功能更大(arr){ 设a=arr[0]; for(设i=0;i7,预期输出25逻辑错误是您将arr[i]或a分配给isGreat,但从不将isGreat与arr[i]进行比较 只需重用a而不是使用isGreat: 功能更大(arr){ 设a=arr[0]; for(设i=1;i

如果函数位于数组的第一个(arr[0])或最后一个索引(arr[arr.length-1]),则该函数仅返回最大数。如何修复逻辑错误

功能更大(arr){
设a=arr[0];
for(设i=0;i20,预期输出10000
log(大于[7,11,25,2]);

//输出=>7,预期输出25
逻辑错误是您将
arr[i]
a
分配给
isGreat
,但从不将
isGreat
arr[i]
进行比较

只需重用
a
而不是使用
isGreat

功能更大(arr){
设a=arr[0];
for(设i=1;ilog(大于[7,11,25,2])
您需要将数组的第一个值作为实际最大值,并从索引
1
开始循环。不需要
a
,这是对数组的另一个引用

在循环内部检查
isGreat
是否小于实际值,并更新
isGreat

该检查可防止对新旧最大值进行多余的赋值

功能更大(arr){
设isGreat=arr[0];
for(设i=1;i
您应该这样做:

function fun(){
   let arr = [7, 9, 10000, 11, 25, 20];
 let a = arr[0];
 for (let i = 0; i < arr.length; i++) {
  a = (a < arr[i]) ? arr[i] : a;
 }
 return a; //Returns 10000
}
函数fun(){
设arr=[7,9,10000,11,25,20];
设a=arr[0];
for(设i=0;i
首先,您在循环中定义了
很好
,因此每次迭代都会重新定义它。试试这个:

功能更大(arr){
设最大值=arr[0];
for(设i=0;i最大值){
最大值=arr[i];
}
}
回报最大;
}

console.log(更大([0,4,6,1,3])
当您找到最大值时,您应该尝试将当前值与当前最大值进行比较,以便最大值在迭代过程中发生变化

这就是一个例子

function isGreater(arr) {
  let greatest = arr[0];
  for (let i = 1; i < arr.length; i++) {
    greatest = greatest < arr[i] ? arr[i] : greatest;
  }
  return greatest;
}
功能更大(arr){
设最大值=arr[0];
for(设i=1;i
尽管您可能已经有了更好的答案,但我还是这样做了:

const isGreater = arr => {
    return arr.sort((a, b) => b - a)[0];
};

这只是按降序对数组进行排序,并返回新排序数组的第一个元素。

尝试
Math.max.apply(null[7,9,10000,11,25,20])
Math.max.apply(null[7,9,10000,11,25,20])
但在任何情况下,都需要在循环之前将变量设置为0,设置为自身或每个循环中当前数组元素的较大值。这是否回答了您的问题?我认为使用扩展运算符比使用
Function.prototype.apply
更干净。在这种情况下,
Math.max(…[7,9,10000,11,25,20])
最终,不同浏览器的性能会有所不同,并且两者都可能导致大数组的堆栈溢出,因此这实际上是个人偏好的问题。