2011-05-01 22 views

Respuesta

4

Si la matriz no está ordenada, no puede hacer esto sin iterar.

0

Dos solución: para ordenar orden descendente y obtener el primer elemento o:

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; 
} 

a optimizar fría usando dos variables, una para la posición y otra para el contenido.

2

Prueba esto:

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; 
    } 
} 
1

Mantener la matriz ordenada o utilizar un montón.

De lo contrario, repita. Incluso si encuentras algún truco para hacerlo, todavía necesitaría iterar por debajo, así que ¿por qué no iterar?

Si parece demasiado código, colóquelo en una rutina separada.

2

Puede usar una función para establecer la variable. Y mantén un registro del máximo en esa función. Aquí hay un ejemplo rápido sin verificación de tipo, prueba o soporte para eliminar un valor.

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; 

Obviamente esto es más agradable si actualmente el establecimiento de este tipo de elementos:

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

En lugar de esto:

var arr = { 1, 500, 2 }; 

La desventaja es que no es natural y requiere el uso de función para obtener los resultados correctos.

+0

¡Solución agradable y que no requiere mucha CPU! – thomasa88

0

O se tendrá iteración en alguna parte (en el código o en JQuery.each()) o puede definir algo como esto:

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); 
} 

y el uso que arr.mpush(v) para poblar la matriz. En este caso, la matriz tendrá la propiedad maxIndex.

17

Puede aplicar Math.max y pasar la matriz como su arguments-

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

Pero ahora Math.max está haciendo la iteración, al igual que lo haría especie.

Alguien tiene que ver cada elemento en una matriz no ordenada ...

10

con jQuery, es tan simple como:

// 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); 
4

obtener la clave de matriz con el valor más alto en javascript

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

es vieja pregunta, pero aquí es una mi sencilla emulación del script PHP max() hecho en javascript:

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

Este valor de retorno de la última clave en ar ray o 0 si no se encuentra nada.

Maby alguien ayuda.

Se puede utilizar como:

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