JavaScript objekta iegūšana no objektu masīva pēc īpašības vērtības

Pieņemsim, ka man ir četru objektu masīvs:

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

Vai ir veids, kā es varu iegūt trešo objektu ({a: 5, b: 6}}), piemēram, pēc īpašībasbvērtības bezfor...in` cikla?

Filtra objektu masīvs, kura īpašība atbilst vērtībai, atgriež masīvu:

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

Skatīt MDN dokumentos par Array.prototipe.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)

Atrod pirmā elementa/objekta vērtību masīvā, pretējā gadījumā tiek atgriezta nedefinēta vērtība.

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

Skatīt MDN dokumentos par Array.prototipe.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)
Komentāri (19)

Es nezinu, kāpēc jūs esat pret for cilpu (domājams, jūs domājāt for cilpu, nevis tieši for..in), tie ir ātri un viegli lasāmi. Lai vai kā, šeit ir dažas iespējas.

For cilpa:


function getByValue(arr, value) {

  for (var i=0, iLen=arr.length; i
Komentāri (6)

Ja es pareizi saprotu, jūs vēlaties atrast objektu masīvā, kura b īpašība ir 6?

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

Vai arī, ja jūs izmantojat pasvītrojumu:

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