Tengo una matriz de objetos en el objeto que tiene una clave diferente, así que quiero que el objeto tenga un valor mínimo en esa matriz
list = [ { 'id':4, 'name':'nitin', 'group':'angularjs' }, { 'id':1, 'name':'nitin', 'group':'angularjs' }, { 'id':2, 'name':'nitin', 'group':'angularjs' }, { 'id':3, 'name':'nitin', 'group':'angularjs' }]lo intenté por
var minValue = Math.min.apply(Math, list.map(function (o) { return o.id; }))pero solo devuelve la identificación, no el objeto completo, entonces tengo que hacer más filtros para obtener el objeto
¿Hay algún método directo para encontrar objetos?
Puede usar el método de reduce de matriz:
var list = [ { 'id':4, 'name':'nitin', 'group':'angularjs' }, { 'id':1, 'name':'nitin', 'group':'angularjs' }, { 'id':2, 'name':'nitin', 'group':'angularjs' }, { 'id':3, 'name':'nitin', 'group':'angularjs' }]; var result = list.reduce(function(res, obj) { return (obj.id < res.id) ? obj : res; }); console.log(result);Usando Array#reduce()
list = [{ 'id': 4, 'name': 'nitin', 'group': 'angularjs' }, { 'id': 1, 'name': 'nitin', 'group': 'angularjs' }, { 'id': 2, 'name': 'nitin', 'group': 'angularjs' }, { 'id': 3, 'name': 'nitin', 'group': 'angularjs' } ]; let min = list.reduce((prev, curr) => prev.id < curr.id ? prev : curr); console.log(min);Probé estas soluciones con Array.reduce pero ninguna de ellas fue una prueba completa. No manejan casos en los que la matriz está vacía o solo tiene 1 elemento.
En cambio, esto funcionó para mí:
const result = array.reduce( (prev, current) => (prev?.id ?? current?.id) >= current?.id ? current : prev, null, );Devuelve nulo si la matriz está vacía y maneja bien otros casos.