Obtener el objeto JavaScript de la matriz de objetos por valor de propiedad [duplicado]

本文 翻译 自 :Obtener un objeto JavaScript de una matriz de objetos por valor de propiedad [duplicado]

Esta pregunta ya tiene una respuesta aquí: Esta pregunta ya tiene una respuesta aquí :

Digamos que tengo una matriz de cuatro objetos: supongamos que tengo una matriz de cuatro objetos :

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

Una forma en que el I que HAY puede conseguir el tercer objeto ( {a: 5, b: 6}) en el hotel El valor de bpara el Ejemplo A sin for...inLoop? Puede haber un método por el atributo de bobtener un tercer valor de objeto ( {a: 5, b: 6}), por ejemplo, no for...inbucle?


Piso # 1

Referencia: https://stackoom.com/question/waiJ/ Obtenga el objeto JavaScript de la matriz de objetos por valor de propiedad-repetir


# 2F

Filtermatriz de objetos, cuya propiedad coincide con el valor, devuelve matriz: matriz de objetos, Filtercuyas propiedades coinciden con el valor, devuelve matriz:

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

En la Sede MDN Docs en Array.prototype.filter () Ver Array.prototype.filter () en la documentación MDN

 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) 

FindEl valor del primer órgano de La / el objeto en Array, de lo contrario undefinedse devuelve. FindEl primer elemento / valor de un objeto en la matriz, de lo contrario undefined.

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

En la Sede MDN Docs en Array.prototype.find () Ver Array.prototype.find () en la documentación MDN

 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) 


Piso # 3

He entendido bien y el I SI, que quiero en el objeto en el descubrimiento al conjunto cuyos bes característica 6? Si he entendido bien, desea que la bpropiedad para 6encontrar objetos de la matriz.

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

O si usaba guión bajo: O, si usaba guión bajo:

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

# 4F

No sé por qué estás en contra de un bucle (presumiblemente que significaba un bucle, no específicamente for..in), que son rápidos y fáciles de leer. Probablemente no sé por qué usted se opone a la de bucle (se refiere al bucle for , No específicamente para ..in), son rápidos y fáciles de leer. De todos modos, aquí hay algunas opciones. De todos modos, aquí hay algunas opciones.

Para bucle: Para bucle:

function getByValue(arr, value) {

  for (var i=0, iLen=arr.length; i<iLen; i++) {

    if (arr[i].b == value) return arr[i];
  }
}

.filtro . Filtro

function getByValue2(arr, value) {

  var result  = arr.filter(function(o){return o.b == value;} );

  return result? result[0] : null; // or undefined

}

.paraCada .para cada

function getByValue3(arr, value) {

  var result = [];

  arr.forEach(function(o){if (o.b == value) result.push(o);} );

  return result? result[0] : null; // or undefined

}

Si, por otro lado, realmente quiso decir para ... en y desea encontrar un objeto con cualquier propiedad con un valor de 6, entonces debe usar para ... a menos que pase los nombres para verificar. Por otro lado, si Realmente desea usar ..in y desea encontrar un objeto con cualquier atributo con un valor de 6, luego, a menos que marque por nombre, debe usar for..in. por ejemplo, por ejemplo

function getByValue4(arr, value) {
  var o;

  for (var i=0, iLen=arr.length; i<iLen; i++) {
    o = arr[i];

    for (var p in o) {
      if (o.hasOwnProperty(p) && o[p] == value) {
        return o;
      }
    }
  }
}

# 5F

Se ve como en el ECMAScript en TI 6 Propuesta existen en los Arraymétodos find()y findIndex(). Miradas en ECMAScript 6 propuesta parece tener un Arraymétodo find()y findIndex(). MDN también ofrece polyfills que puede incluir para obtener la funcionalidad de estos en todos los navegadores. MDN también ofrece polyfills, que puede incluir para obtener su funcionalidad en todos los navegadores.

find(): find()

function isPrime(element, index, array) {
    var start = 2;
    while (start <= Math.sqrt(element)) {
        if (element % start++ < 1) return false;
    }
    return (element > 1);
}

console.log( [4, 6, 8, 12].find(isPrime) ); // undefined, not found
console.log( [4, 5, 8, 12].find(isPrime) ); // 5

findIndex(): findIndex()

function isPrime(element, index, array) {
    var start = 2;
    while (start <= Math.sqrt(element)) {
        if (element % start++ < 1) return false;
    }
    return (element > 1);
}

console.log( [4, 6, 8, 12].findIndex(isPrime) ); // -1, not found
console.log( [4, 6, 7, 12].findIndex(isPrime) ); // 2

Piso # 6

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

Para acceder a la tercera objeto, uso: jsObjects[2]; Para acceder a la tercera objeto, el uso de: jsObjects[2];
a de acceso a objetos en la tercera, el valor b, el uso: jsObjects[2].b; Para acceder a la tercera objeto b valores, el uso:jsObjects[2].b;

Publicado 0 artículos originales · elogiado 8 · 30,000+ visitas

Supongo que te gusta

Origin blog.csdn.net/asdfgh0077/article/details/105508765
Recomendado
Clasificación