valor obtener objetos objects number maximum maximo elementos array agregar javascript arrays min

objetos - Obtener el menor valor de la matriz en Javascript?



math.min javascript (11)

¿Posiblemente una manera más fácil?

Digamos que justPrices está mezclado en términos de valor, por lo que no se sabe dónde está el valor más pequeño.

justPrices[0] = 4.5 justPrices[1] = 9.9 justPrices[2] = 1.5

Usa el género

justPrices.sort();

Entonces los pondría en orden para usted. (También se puede hacer alfabéticamente). El conjunto se colocará en orden ascendente.

justPrices[0] = 1.5 justPrices[1] = 4.5 justPrices[2] = 9.9

Entonces puede agarrar fácilmente por el primer índice.

justPrices[0]

Encuentro que esto es un poco más útil que lo que se propuso anteriormente porque, ¿qué pasa si necesitas los 3 números más bajos como ejemplo? También puede cambiar el orden en que están organizados, más información en http://www.w3schools.com/jsref/jsref_sort.asp

Array justPrices tiene valores tales como:

[0] = 1.5 [1] = 4.5 [2] = 9.9.

¿Cómo devuelvo el valor más pequeño en la matriz?


Creo que tengo una solución fácil de entender para esto, usando solo los conceptos básicos de javaScript.

function myFunction() { var i = 0; var smallestNumber = justPrices[0]; for(i = 0; i < justPrices.length; i++) { if(justPrices[i] < smallestNumber) { smallestNumber = justPrices[i]; } } return smallestNumber; }

La variable smallestNumber se establece en el primer elemento de justPrices y el bucle for lo hace en la matriz (supongo que ya sabes cómo funciona un bucle for; si no, búscalo). Si un elemento de la matriz es más pequeño que el número smallestNumber actual (que al principio es el primer elemento), reemplazará su valor. Cuando toda la matriz ha pasado por el ciclo, smallestNumber contendrá el número más pequeño en la matriz.


ES6 es el camino del futuro.

arr.reduce((a, b) => Math.min(a, b));

Prefiero este formulario porque se puede generalizar fácilmente para otros casos de uso


El último código expresivo para encontrar el valor mínimo es, probablemente, los parámetros de descanso :

const arr = [14, 58, 20, 77, 66, 82, 42, 67, 42, 4] const min = Math.min(...arr) console.log(min)

Los parámetros de reposo son esencialmente una abreviatura conveniente para Function.prototype.apply cuando no necesita cambiar el contexto de la función:

var arr = [14, 58, 20, 77, 66, 82, 42, 67, 42, 4] var min = Math.min.apply(Math, arr) console.log(min)

Este es también un gran caso de uso para Array.prototype.reduce :

const arr = [14, 58, 20, 77, 66, 82, 42, 67, 42, 4] const min = arr.reduce((a, b) => Math.min(a, b)) console.log(min)

Puede ser tentador pasar Math.min directamente para reduce , sin embargo, la devolución de llamada recibe parámetros adicionales:

callback (accumulator, currentValue, currentIndex, array)

En este caso particular, puede ser un poco detallado. reduce es particularmente útil cuando tiene una colección de datos complejos que desea agregar en un único valor:

const arr = [{name: ''Location 1'', distance: 14}, {name: ''Location 2'', distance: 58}, {name: ''Location 3'', distance: 20}, {name: ''Location 4'', distance: 77}, {name: ''Location 5'', distance: 66}, {name: ''Location 6'', distance: 82}, {name: ''Location 7'', distance: 42}, {name: ''Location 8'', distance: 67}, {name: ''Location 9'', distance: 42}, {name: ''Location 10'', distance: 4}] const closest = arr.reduce( (acc, loc) => acc.distance < loc.distance ? acc : loc ) console.log(closest)

Y, por supuesto, siempre puedes usar la iteración clásica:

var arr, i, l, min arr = [14, 58, 20, 77, 66, 82, 42, 67, 42, 4] min = Number.POSITIVE_INFINITY for (i = 0, l = arr.length; i < l; i++) { min = Math.min(min, arr[i]) } console.log(min)

... pero incluso la iteración clásica puede obtener un cambio de imagen moderno:

const arr = [14, 58, 20, 77, 66, 82, 42, 67, 42, 4] let min = Number.POSITIVE_INFINITY for (const value of arr) { min = Math.min(min, value) } console.log(min)


Encuentro que la forma más fácil de devolver el valor más pequeño de una matriz es usar el Operador de extensión en la función Math.min ().

return Math.min(...justPrices); //returns 1.5 on example given

La página en MDN ayuda a comprenderlo mejor: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/min

Un poco más: Esto también funciona en la función Math.max ()

devuelve Math.max (... justPrices); // devuelve 9.9 en el ejemplo dado.

¡Espero que esto ayude!


Imagina que tienes esta matriz:

var arr = [1, 2, 3];

Forma ES6:

var min = Math.min(...arr); //min=1

Forma ES5:

var min = Math.min.apply(null, arr); //min=1

Si usa D3.js, hay una función útil que hace lo mismo, pero ignorará los valores indefinidos y también comprobará el orden natural:

d3.max (array [, accessor])

Devuelve el valor máximo en la matriz dada usando orden natural. Si la matriz está vacía, devuelve indefinido. Se puede especificar una función de acceso opcional, que es equivalente a llamar a array.map (acceso) antes de calcular el valor máximo.

A diferencia del Math.max incorporado, este método ignora los valores indefinidos; esto es útil para ignorar los datos faltantes. Además, los elementos se comparan usando el orden natural en lugar del orden numérico. Por ejemplo, el máximo de las cadenas ["20", "3"] es "3", mientras que el máximo de los números [20, 3] es 20.

Y este es el código fuente para D3 v4:

export default function(values, valueof) { var n = values.length, i = -1, value, max; if (valueof == null) { while (++i < n) { // Find the first comparable value. if ((value = values[i]) != null && value >= value) { max = value; while (++i < n) { // Compare the remaining values. if ((value = values[i]) != null && value > max) { max = value; } } } } } else { while (++i < n) { // Find the first comparable value. if ((value = valueof(values[i], i, values)) != null && value >= value) { max = value; while (++i < n) { // Compare the remaining values. if ((value = valueof(values[i], i, values)) != null && value > max) { max = value; } } } } } return max; }


Jon Resig ilustró en este artículo cómo podría lograrse esto extendiendo el prototipo de Array e invocando el método Math.min subyacente que desafortunadamente no toma una matriz, sino una cantidad variable de argumentos:

Array.min = function( array ){ return Math.min.apply( Math, array ); };

y entonces:

var minimum = Array.min(array);


Si está utilizando Underscore o Lodash, puede obtener el valor mínimo utilizando este tipo de tubería funcional simple

_.chain([7, 6, -1, 3, 2]).sortBy().first().value() // -1

También tienes la función .min

_.min([7, 6, -1, 3, 2]) // -1


Actualización: use la respuesta de Darin / John Resig, solo tenga en cuenta que no necesita especificar thisArg por min , entonces Math.min.apply(null, arr) funcionará bien.

o simplemente puede ordenar la matriz y obtener el valor n. ° 1: [2,6,7,4,1].sort()[0]

[!] Pero sin proporcionar una función de clasificación de números personalizada, esto solo funcionará en un caso muy limitado: números positivos menores que 10 . Vea cómo se rompería:

var a = ['''', -0.1, -2, -Infinity, Infinity, 0, 0.01, 2, 2.0, 2.01, 11, 1, 1e-10, NaN]; // correct: a.sort( function (a,b) { return a === b ? 0 : a < b ? -1: 1} ); //Array [NaN, -Infinity, -2, -0.1, 0, "", 1e-10, 0.01, 1, 2, 2, 2.01, 11, Infinity] // incorrect: a.sort(); //Array ["", -0.1, -2, -Infinity, 0, 0.01, 1, 11, 1e-10, 2, 2, 2.01, Infinity, NaN]

Y, también, la matriz se cambia in situ , lo que podría no ser lo que quieres.


function smallest(){ if(arguments[0] instanceof Array) arguments = arguments[0]; return Math.min.apply( Math, arguments ); } function largest(){ if(arguments[0] instanceof Array) arguments = arguments[0]; return Math.max.apply( Math, arguments ); } var min = smallest(10, 11, 12, 13); var max = largest([10, 11, 12, 13]); console.log("Smallest: "+ min +", Largest: "+ max);


var array =[2,3,1,9,8]; var minvalue = array[0]; for (var i = 0; i < array.length; i++) { if(array[i]<minvalue) { minvalue = array[i]; } } console.log(minvalue);