objects findindex elemento ejemplos buscar array javascript jquery arrays position

findindex - Obtener valor máximo y mínimo de la matriz en JavaScript



javascript indexof array of objects (6)

¿Por qué no almacenarlo como una matriz de precios en lugar de un objeto?

prices = [] $(allProducts).each(function () { var price = parseFloat($(this).data(''price'')); prices.push(price); }); prices.sort(function(a, b) { return a - b }); //this is the magic line which sort the array

De esa manera puedes simplemente

prices[0]; // cheapest prices[prices.length - 1]; // most expensive

Tenga en cuenta que puede hacer shift() y pop() para obtener el precio mínimo y máximo respectivamente, pero esto eliminará el precio de la matriz.

Una alternativa aún mejor es usar la solución Sergei a continuación, usando Math.max y min respectivamente.

EDITAR:

Me di cuenta de que esto sería incorrecto si tiene algo como [11.5, 3.1, 3.5, 3.7] ya que 11.5 se trata como una cadena, y vendría antes de la 3.x en el orden del diccionario, debe pasar la función de clasificación personalizada a asegúrese de que efectivamente son tratados como flotador:

prices.sort(function(a, b) { return a - b });

Estoy creando la siguiente matriz a partir de atributos de datos y necesito poder tomar el valor más alto y más bajo para poder pasarla a otra función más adelante.

var allProducts = $(products).children("li"); prices = [] $(allProducts).each(function () { var price = parseFloat($(this).data(''price'')); prices[price] = price; }); console.log(prices[0]) <!-- this returns undefined

Los elementos de mi lista tienen este aspecto (he reducido la legibilidad):

<li data-price="29.97"><a href="#">Product</a></li> <li data-price="31.00"><a href="#">Product</a></li> <li data-price="19.38"><a href="#">Product</a></li> <li data-price="20.00"><a href="#">Product</a></li>

Un console.log rápido sobre precios me muestra mi matriz, que parece estar ordenada para poder tomar el primer y último elemento que asumo, pero en la actualidad los nombres y valores de la matriz son los mismos, así que siempre que intento hacer un precio [0 ], Me quedo indefinido

[] 19.38 19.38 20.00 20.00 29.97 29.97 31.00 31.00

Tengo la sensación de que esta es una pregunta estúpidamente fácil, así que por favor sea amable :)


En lugar de .each, otro enfoque (quizás más conciso) para obtener todos esos precios podría ser:

var prices = $(products).children("li").map(function() { return $(this).prop("data-price"); }).get();

Además, es posible que desee considerar filtrar la matriz para eliminar los valores de la matriz vacía o no numérica en caso de que existan:

prices = prices.filter(function(n){ return(!isNaN(parseFloat(n))) });

luego usa la solución de Sergey arriba:

var max = Math.max.apply(Math,prices); var min = Math.min.apply(Math,prices);


Para obtener el valor mínimo / máximo en la matriz, puede utilizar:

var _array = [1,3,2]; Math.max.apply(Math,_array); // 3 Math.min.apply(Math,_array); // 1


Si tiene valores "dispersos" (no dentro de una matriz) puede usar:

var max_value = Math.max(val1, val2, val3, val4, val5);


use esto y funciona tanto en las matrices estáticas como en las matrices generadas dinámicamente.

var array = [12,2,23,324,23,123,4,23,132,23]; var getMaxValue = Math.max.apply(Math, array );

Tuve el problema cuando uso tratando de encontrar el valor máximo del código a continuación

$(''#myTabs'').find(''li.active'').prevAll().andSelf().each(function () { newGetWidthOfEachTab.push(parseInt($(this).outerWidth())); }); for (var i = 0; i < newGetWidthOfEachTab.length; i++) { newWidthOfEachTabTotal += newGetWidthOfEachTab[i]; newGetWidthOfEachTabArr.push(parseInt(newWidthOfEachTabTotal)); } getMaxValue = Math.max.apply(Math, array);

Estaba usando ''NAN'' cuando uso

var max_value = Math.max(12, 21, 23, 2323, 23);

con mi código


arr = [9,4,2,93,6,2,4,61,1]; ArrMax = Math.max.apply(Math, arr);