JavaScript objekto gavimas iš objektų masyvo pagal savybės vertę

Tarkime, kad turiu keturių objektų masyvą:

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

Ar yra būdas, kuriuo galėčiau gauti trečiąjį objektą ({a: 5, b: 6}) pagal savybės b reikšmę, pavyzdžiui, be for...in ciklo?

Filtro objektų masyvas, kurio savybė atitinka reikšmę, grąžinamas masyvas:

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

Žr. MDN dokumentus apie 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)

Nustatoma pirmojo masyvo elemento/objekto reikšmė, priešingu atveju grąžinama neapibrėžta reikšmė.

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

Žr. MDN dokumentus apie 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)
Komentarai (19)

Nežinau, kodėl esate prieš for ciklą (tikriausiai turėjote omenyje for ciklą, o ne konkrečiai for..in), jie yra greiti ir lengvai skaitomi. Šiaip ar taip, štai keletas variantų.

For ciklas:


function getByValue(arr, value) {

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

Jei teisingai suprantu, jūs norite rasti objektą masyve, kurio savybė b yra 6?

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

Arba, jei naudojote underscore:

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