Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

252
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!