获取javascript中具有最高值的数组键

我有一个类似的数组

arr[1] = 234; arr[2] = 345; ... arr[40] = 126; 

如何在不重复数组的情况下获取具有最高值的元素的索引?

您可以应用Math.max并将数组作为其参数传递 –

 arr.indexOf(Math.max.apply(window,arr)) 

但是现在Math.max正在进行迭代,就像排序一样。

有人必须查看未排序数组中的每个项目……

使用jQuery,就像:

 // Get the max value from the array maxValue = Math.max.apply(this, arr); // Get the index of the max value, through the built in function inArray $.inArray(maxValue,arr); 

如果没有对数组进行排序,则不能在没有迭代的情况下执行此操作。

获取javascript中具有最高值的数组键

 var cars = ["Saab", "Volvo", "BMW"]; var max_car_result = cars[cars.length-1]; alert(max_car_result); 

试试这个:

 var max_index = -1; var max_value = Number.MIN_VALUE; for(var i = 0; i < arr.length; i++) { if(arr[i] > max_value) { max_value = arr[i]; max_index = i; } } 

您可以使用函数来设置变量。 并跟踪该function的最大值。 这是一个没有类型检查,测试或支持删除值的快速示例。

 Array.prototype.maxValue = null; Array.prototype.setIndex = function(index, value){ this[index] = value; if (value > this.maxValue || this.maxValue == null) this.maxValue = value; } var arr = new Array(); arr.setIndex(0, 234); arr.setIndex(1, 500); arr.setIndex(2, -5); var maxValue = arr.maxValue; 

显然,如果你正在设置这样的项目,那就更好了:

 var arr = new Array(); arr[0] = 1; arr[1] = 500; arr[2] = 2; 

而不是这个:

 var arr = { 1, 500, 2 }; 

缺点是它不自然,需要你使用函数来获得正确的结果。

保持数组排序或使用堆。

否则迭代。 即使你发现了一些技巧,它仍然需要在下面迭代,所以为什么不迭代?

如果看起来代码太多,请将其放在单独的例程中。

两种解决方案:按降序排序并获取第一个元素或:

 function bigger(array) { if (array.length < 1) { return -1; } bigger = 0; for(var i=1; i array[bigger]) { bigger = i; } } return bigger; } 

你使用两个变量进行冷优化,一个用于位置,另一个用于内容。

您可以在某处(在您的代码中或在JQuery.each()中)进行迭代,或者您可以定义如下内容:

 Array.prototype.mpush = function(v) { var maxv = this.maxValue || Number.MIN_VALUE; if( v > maxv ) { this.maxValue = v; this.maxIndex = this.length; } this.push(v); } 

并使用该arr.mpush(v)来填充您的数组。 在这种情况下,数组将具有maxIndex属性。

是旧问题,但这里是我在javascript中制作的PHP脚本max()简单模拟:

 function max(array){ if(Object.prototype.toString.call( array ) === '[object Array]'){ return array[(array.length-1)]; } else return 0; } 

这是数组中最后一个键的返回值,如果没有找到则返回0

Maby有人帮忙。

您可以像以下一样使用它:

 var array = ['bananaman','spiderman','ironman','superman','batman','manman']; var getLast = max(array); if(getLast !== 0) alert(getLast); // manman