Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

256
Visualizações
La mejor manera de cambiar el valor de una propiedad. Está dentro de un objeto de una matriz de objetos.

Estoy tratando de cambiar el valor de selected de lo que sea actualmente (verdadero o falso) al opuesto cuando un usuario hace clic en una casilla de verificación. Se supone que mi función toggleCheck devuelve todos los datos con el valor de selección alterado. Aquí está la estructura de datos. Es un objeto con arreglos que tienen objetos.

 { "ModuleName": [{ "module": "string", "selected": false, "name": "title", "points": [{ "category": "category1", "description": "desc1", "provided": "provided1" }, { "category": "category1", "description": "desc", "provided": "something" } ] }, { "module": "string", "selected": false, "name": "title_one", "points": [{ "category": "category1", "description": "desc1", "provided": "provided1" }, { "category": "category1", "description": "desc", "provided": "something" } ] } ], [...], [...] }

Mi intento más cercano pero es el formato incorrecto

 function toggleCheck(checkedValue, valuesArr) { return { value: Object.entries(valuesArr).map(([key, values], i) => values.map((x) => { return { ...x, selected: x.name === checkedValue.name ? !x.selected : x.selected, }; }) ), }; }

probablemente porque usé un mapa que lo envolvió en una matriz

 [ [ {}, {}, {} ], [...], [...] ]

^^^ Lo que tengo

 { "Name": [ {}, {}, {} ], "Name": [...], "Name": [...] }

^^^ Lo que necesito

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

function toggleCheck(checkedValue, valuesArr) { //Step 0: Change the value in the data let checked = Object.entries(valuesArr).map(([key, values], i) => values.map((x) => { return { ...x, selected: x.name === checkedValue.name ? !x.selected : x.selected, }; }) ); //Step 1: Group the modules into like arrays let grouped = checked .flat().reduce(function (r, a, i) { if (!i || r[r.length - 1][0].module !== a.module) { return r.concat([[a]]); } r[r.length - 1].push(a); return r; }, []); //Step 2: Assign the new object properties as the arrays. //The key being the module name. let newObj = {}; grouped.map((x, i) => { newObj[x[0].module] = x; }); return {value: newObj}; }
about 4 years ago · Juan Pablo Isaza Relatório

0

En tu pregunta escribiste:

 { "Name": [ {}, {}, {} ], "Name": [...], "Name": [...] }

^^^ Lo que necesito


esto no puede existir en el objeto JS. Solo se tendrá en cuenta la última asignación de la propiedad nombre, todas las anteriores son solo valores antiguos de esta propiedad

codificación:

 const data = { name:'aaa' , name:'bbb' , name:'ccc' }

es lo mismo que codificar

 const data = {} data.name = 'aaa' data.name = 'bbb' data.name = 'ccc'

prueba:

 const data = { name:'aaa' , name:'bbb' , name:'ccc' } console.log( data )
 .as-console-wrapper {max-height: 100% !important;top: 0;} .as-console-row::after {display: none !important;}

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda