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

94
Views
cómo buscar en la matriz json el valor y luego borrar el índice si se encuentra el valor

Obtuve esta cadena json que necesito analizar y eliminar datos, pero no estoy seguro de cómo hacerlo. Digamos que tengo el siguiente json:

 <input name="uppyResult" type="hidden" value="[{ &quot;successful&quot;:[ {&quot;id&quot;:&quot;uppy-a8geo/fw/400x400/jpg-1d-2v-1e-image/jpeg-10097-1626922525568&quot;}, {&quot;id&quot;:&quot;uppy-maxresdefault/jpg-1e-image/jpeg-81700-1626406845772&quot;} ], &quot;failed&quot;:[], &quot;uploadID&quot;:&quot;ckss6e4xv00023h63uov94n5e&quot; }]" >

Obtengo el elemento con document.getElementsByName("uppyResult")[0].value; y luego lo analizo con const obj = JSON.parse(json) .

¿Cómo elimino solo el índice donde id: uppy-maxresdefault/jpg-1e-image/jpeg-81700-1626406845772 y lo vuelvo a insertar como una cadena en el DOM?

Editar: la versión anterior tenía " en lugar de &quot; value interno

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Tu puedes hacer:

 const data = [{ "successful":[ {"id":"uppy-a8geo/fw/400x400/jpg-1d-2v-1e-image/jpeg-10097-1626922525568"}, {"id":"uppy-maxresdefault/jpg-1e-image/jpeg-81700-1626406845772"} ], "failed":[], "uploadID":"ckss6e4xv00023h63uov94n5e" }] const idToRemove = "uppy-maxresdefault/jpg-1e-image/jpeg-81700-1626406845772" const result = data.map(obj => Object.entries(obj).reduce((a, [k, v]) => { a[k] = Array.isArray(v) ? v.filter(item => item.id !== idToRemove) : v return a }, {})) console.log(result)

about 4 years ago · Juan Pablo Isaza Report

0

 const data = [{ "successful":[ {"id":"uppy-a8geo/fw/400x400/jpg-1d-2v-1e-image/jpeg-10097-1626922525568"}, {"id":"uppy-maxresdefault/jpg-1e-image/jpeg-81700-1626406845772"} ], "failed":[], "uploadID":"ckss6e4xv00023h63uov94n5e" }]; const toRemove = "uppy-maxresdefault/jpg-1e-image/jpeg-81700-1626406845772"; data.forEach(item => { Object.values(item).forEach(array => { if (!Array.isArray(array)) return; const index = array.findIndex(elm => elm.id === toRemove); if (index > -1) array.splice(index, 1); }); }); console.log(data);

about 4 years ago · Juan Pablo Isaza Report

0

No tenías muy claro lo que querías eliminar, pero estas son ambas posibilidades:

  • El primer filtro usa descomposición y encuentra cualquier elemento donde coincida la identificación.
  • El segundo filtro elimina todas las entradas de matrices exitosas que coincidan con la identificación de búsqueda. Tenga en cuenta que se tiene cuidado de no mutar los datos originales: copió cada objeto en la matriz y los modificó (no estoy seguro de si eso fue importante).

Se agregó un elemento adicional a la matriz de valores para fines de prueba.

 let value='[{ \ "successful":[ \ {"id":"uppy-a8geo/fw/400x400/jpg-1d-2v-1e-image/jpeg-10097-1626922525568"}, \ {"id":"uppy-maxresdefault/jpg-1e-image/jpeg-81700-1626406845772"} \ ], \ "failed":[], \ "uploadID":"ckss6e4xv00023h63uov94n5e" \ },{ \ "successful":[ \ {"id":"uppy-a8geo/fw/400x400/jpg-1d-2v-1e-image/jpeg-10097-1626922525568"}, \ {"id":"not-uppy-maxresdefault/jpg-1e-image/jpeg-81700-1626406845772"} \ ], \ "failed":[], \ "uploadID":"some_other_id" \ }]' let data = JSON.parse(value) var filter_data = value => data.filter( ({successful}) => ! successful.find( ({id}) => id == value )) var filter_successful = value => data.map( elem => { elem = Object.assign( {}, elem ) // copy element to avoid mutation elem.successful = elem.successful.filter( ({id}) => id != value ) return elem }) console.log('Remove any object from the values array where the search id is in the successful array') console.log(filter_data('uppy-maxresdefault/jpg-1e-image/jpeg-81700-1626406845772')) console.log('Remove successful entries that match the search id from all values') console.log(filter_successful('uppy-a8geo/fw/400x400/jpg-1d-2v-1e-image/jpeg-10097-1626922525568'))

Si quisiera eliminar cualquier objeto que coincidiera con el término de búsqueda de cualquier miembro de "valor" que fuera una matriz, entonces la técnica de @Amir MB es superior: .reduce() hace eso y también crea copias, evitando la mutación. Una vez más, no está claro si ese era un requisito.

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!