Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

140
Vistas
Actualización del valor del atributo dentro de la matriz

Tengo una matriz de la siguiente manera:

 myArray = [ { "id": 1, "data": [ { "active":1, "dataId":1 }, { "active":0, "dataId":2 }, { { "active":1, "dataId":3 } } ] } ]

Arriba es solo una matriz de muestra, en tiempo de ejecución puede tener muchos elementos. Tengo un método como el siguiente que recibe id, dataId y active (el valor de active puede ser 0 o 1) como argumento.

 myMethod(id, dataId, activeValue) { }

Cuando se reciben este Id y dataId, necesito encontrar el elemento con ese id, luego entrar en la matriz de datos y encontrar el elemento con dataId y establecer el valor del atributo activo con el valor activo recibido en el argumento.

Mi intento:

 myMethod(id, dataId, activeValue) { this.myArray.find(item => item.id === id).data[dataId].active = activeValue }

Pero este código no está actualizando el valor. ¿Cómo puedo hacer eso?

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

¡Cerca! Su error radica en la parte de actualizar la propiedad active , el dataID de datos no coincide con el índice de la matriz.

Debe reemplazar .data[dataId] con .data.find(dataItem => dataItem.dataId === dataId)

Esto debería funcionar:

 function myMethod(id, dataId, activeValue) { myArray.find(item => item.id === id).data.find(dataItem => dataItem.dataId === dataId).active = activeValue }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Primero, su objeto tiene {} innecesarios alrededor del último elemento .data[] . Luego, debe definir la función como un método del objeto para que this apunte al objeto:

 const myArray = [ { "id": 1, "data": [ { "active":1, "dataId":1 }, { "active":0, "dataId":2 }, { "active":1, "dataId":3 } ] } ]; myArray.myMethod = function(id, dataId, activeValue) { this.find(item => item.id === id).data.find(d => d.dataId === dataId).active = activeValue; } myArray.myMethod(1,3,0); console.log( myArray ); //LAST data[] element: "active":1 ===> "active":0

about 4 years ago · Juan Pablo Isaza Denunciar

0

Datos de prueba:

 myArray = [ { "id": 1, "data": [ {"active": 1, "dataId": 1}, {"active": 0, "dataId": 2}, {"active": 1, "dataId": 3}, {"active": 1, "dataId": 4}, {"active": 1, "dataId": 5}, {"active": 1, "dataId": 6} ] }, { "id": 2, "data": [ {"active": 1, "dataId": 1}, {"active": 0, "dataId": 2}, {"active": 1, "dataId": 3}, {"active": 1, "dataId": 4}, {"active": 1, "dataId": 5}, {"active": 1, "dataId": 6} ] }, { "id": 3, "data": [ {"active": 1, "dataId": 1}, {"active": 0, "dataId": 2}, {"active": 1, "dataId": 3}, {"active": 1, "dataId": 4}, {"active": 1, "dataId": 5}, {"active": 1, "dataId": 6} ] }];

método de matriz:

 myArray.myMethod = function(id, dataId, activeValue) { this.find(item => item.id === id) .data.find(item => item.dataId === dataId) .active = activeValue; }

Llamada de método y registro de prueba:

 myArray.myMethod(3, 6, 0); console.log(...myArray);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda