获取javascript中值最高的数组键
Get the array key with the highest value in javascript
我有一个像
这样的数组arr[1] = 234;
arr[2] = 345;
...
arr[40] = 126;
如何在不重复数组的情况下获得值最高的元素的索引?
您可以应用数学。Max并将数组作为参数传递-
arr.indexOf(Math.max.apply(window,arr))
但是现在数学。Max正在进行迭代,就像sort所做的那样。
某人必须查看未排序数组中的每个项…
使用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;
}
}
您可以使用函数来设置变量。然后跟踪这个函数的最大值。下面是一个没有类型检查、测试或支持删除值的快速示例。
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.length;i++ ) {
if(array[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属性。
是一个老问题,但这里是我的一个简单的模拟PHP脚本max()
在javascript:
function max(array){
if(Object.prototype.toString.call( array ) === '[object Array]'){
return array[(array.length-1)];
}
else return 0;
}
如果没有找到,返回数组或0
中最后一个键的值。
也许有人能帮帮我。
你可以这样使用:
var array = ['bananaman','spiderman','ironman','superman','batman','manman'];
var getLast = max(array);
if(getLast !== 0)
alert(getLast); // manman
相关文章:
- 如何遍历包含对象的数组-javascript
- 保存数组javascript
- 查找数组javascript中包含的元素类型
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 从多维数组javascript中提取特定值
- 如何在数组javascript中选择伪随机值
- 拆分字符串数组(JavaScript)后未定义
- 从数组JavaScript中删除并返回最后n个项的最快方法
- 使用条件for循环更新数组-Javascript
- 从数组javascript创建新对象
- 用数组(javascript)中的值替换regex捕获
- 从数组[Javascript]的总长度中减去一个干净的数字
- 将一个字符串数组解析为一个新的数组javascript
- 如何将对象转换为对象数组javascript
- 赢得't循环数组javascript
- 从不同的数组 JavaScript 中获取值
- 多维数组 JAVASCRIPT 出了点问题
- 可以't分配给一个对象数组javascript
- 比较数组JavaScript中的对象
- 如何完成缺少(连续)元素的数组|Javascript