Pregunta Encuentra el objeto por su propiedad en una matriz de objetos de forma angular


Tengo una matriz como a continuación

var myArray = [{'id':'73','name':'john'},{'id':'45','name':'Jass'}, etc.]

Ahora tengo un id 73 cómo seleccionar este objeto particular de la matriz. Veo que puedo hacer esto en jQuery fácilmente con grep Hay alguna forma angular de hacer esto?

Dado que la mayoría de los usuarios que desarrollan aplicaciones con ángulos siempre obtienen datos del conjunto de objetos (principalmente para la tabla), ¿debería haber una función de ayuda para esto?

De modo que puedo cambiar los datos de la fila con el ID de la fila actualizando la matriz del objeto.

No quiero atar esto a la vista. Quiero manipular los datos y actualizar la función de entrada de datos.

Por ejemplo. Tengo una lista de la mesa. Si el usuario final edita una fila de la tabla, tengo el ID del objeto, así que después de que el usuario final presione guardar, necesito actualizar la matriz y luego volver al listado de la tabla.


33
2017-10-28 14:09


origen


Respuestas:


puedes usar angular's filter https://docs.angularjs.org/api/ng/filter/filter

en tu controlador:

$filter('filter')(myArray, {'id':73}) 

o en tu HTML

{{ myArray | filter : {'id':73} }}

55
2017-10-28 14:16



¿Qué tal JavaScript simple? Más sobre Array.prototype.filter().

var myArray = [{'id': '73', 'name': 'john'}, {'id': '45', 'name': 'Jass'}]

var item73 = myArray.filter(function(item) {
  return item.id === '73';
})[0];

// even nicer with ES6 arrow functions:
// var item73 = myArray.filter(i => i.id === '73')[0];

console.log(item73); // {"id": "73", "name": "john"}


35
2017-10-28 14:18



Para completar M B respuesta, si desea acceder a un atributo específico de este objeto ya filtrado de la matriz en su HTML, tendrá que hacerlo de esta manera:

{{ (myArray | filter : {'id':73})[0].name }} 

Entonces, en este caso, se imprimirá john en el HTML.

¡Saludos!


0
2017-08-08 09:17