Obtener un objeto JavaScript de un array de objetos por el valor de una propiedad

Digamos que tengo un array de cuatro objetos:

var jsObjects = [
   {a: 1, b: 2}, 
   {a: 3, b: 4}, 
   {a: 5, b: 6}, 
   {a: 7, b: 8}
];

¿Hay alguna forma de obtener el tercer objeto ({a: 5, b: 6}) por el valor de la propiedad b por ejemplo sin un bucle for...in?

Matriz de objetos Filter, cuya propiedad coincide con el valor, devuelve la matriz:

var result = jsObjects.filter(obj => {
  return obj.b === 6
})

Ver los MDN Docs on Array.prototype.filter()

const jsObjects = [
  {a: 1, b: 2}, 
  {a: 3, b: 4}, 
  {a: 5, b: 6}, 
  {a: 7, b: 8}
]

let result = jsObjects.filter(obj => {
  return obj.b === 6
})

console.log(result)

Encuentra el valor del primer elemento/objeto del array, de lo contrario se devuelve indefinido.

var result = jsObjects.find(obj => {
  return obj.b === 6
})

Ver los MDN Docs on Array.prototype.find()

const jsObjects = [
  {a: 1, b: 2}, 
  {a: 3, b: 4}, 
  {a: 5, b: 6}, 
  {a: 7, b: 8}
]

let result = jsObjects.find(obj => {
  return obj.b === 6
})

console.log(result)
Comentarios (19)

No sé por qué estás en contra de un bucle for (presumiblemente querías decir un bucle for, no específicamente for..in), son rápidos y fáciles de leer. De todos modos, aquí hay algunas opciones.

Bucle for:


function getByValue(arr, value) {

  for (var i=0, iLen=arr.length; i
Comentarios (6)

Si he entendido bien, ¿quieres encontrar el objeto del array cuya propiedad b es 6?

var found;
jsObjects.some(function (obj) {
  if (obj.b === 6) {
    found = obj;
    return true;
  }
});

O si se utiliza el guión bajo:

var found = _.select(jsObjects, function (obj) {
  return obj.b === 6;
});
Comentarios (4)