• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

99
Views
Cómo cambiar datos en un JSON anidado por javascript lodash

por ejemplo, tengo un archivo JSON como este

 { "employees": [ { "name": "Ram", "email": "ram@gmail.com", "age": 23 }, { "name": "Shyam", "email": "shyam23@gmail.com", "age": 28 }, { "name": "John", "email": "john@gmail.com", "age": 33 }, { "name": "Bob", "email": "bob32@gmail.com", "age": 33 } ] }

Ahora quiero crear una nueva matriz igual a esta, pero con un valor específico modificado, como si la edad fuera 33 y luego cambiar a 1, como

 { "employees": [ { "name": "Ram", "email": "ram@gmail.com", "age": 23 }, { "name": "Shyam", "email": "shyam23@gmail.com", "age": 28 }, { "name": "John", "email": "john@gmail.com", "age": 1 }, { "name": "Bob", "email": "bob32@gmail.com", "age": 1 } ] }

¿Cómo puedo hacer esto con lodash o javascript array? muchas gracias chico

almost 3 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Para crear una nueva matriz, debe tener cuidado de no modificar los elementos existentes de la matriz. Puede hacer esto de varias maneras, sin embargo, debido a que sus datos tienen varios niveles, el uso de funciones como Array.map() o el operador Spread ( ... ) puede ser problemático. Primero debe copiar los datos. Una forma es usar JSON.stringify() y JSON.parse() para crear la copia, luego modificarla usando un método de manipulación de matrices ( .map() , .reduce() , .forEach() , etc.) para modificar los datos .

 var data = { employees: [ { name: "Ram", email: "ram@gmail.com", age: 23 }, { name: "Shyam", email: "shyam23@gmail.com", age: 28 }, { name: "John", email: "john@gmail.com", age: 33 }, { name: "Bob", email: "bob32@gmail.com", age: 33 } ] } var copy = JSON.parse(JSON.stringify(data)) copy.employees.map( elem => { elem.age = elem.age==33?1:elem.age; return elem } ) console.log(copy)

almost 3 years ago · Juan Pablo Isaza Report

0

El mapa es la buena manera de hacerlo, pero si está anidado en algún lugar de un objeto, también puede agregar el operador de propagación:

 const object = { employees: [ { name: "Ram", email: "ram@gmail.com", age: 23 }, { name: "Shyam", email: "shyam23@gmail.com", age: 28 }, { name: "John", email: "john@gmail.com", age: 33 }, { name: "Bob", email: "bob32@gmail.com", age: 33 }, ] } const employees = object.employees.map((employee) => { employee.age = employee.age === 33 ? 1 : employee.age; return employee }) const newObject = { ...object, employees: employees } console.log(newObject)

almost 3 years ago · Juan Pablo Isaza Report

0

como @Tibrogargan mencionó, esta respuesta no es buena si necesita hacer una copia profunda porque la función de mapa hace una copia superficial, puede ver más sobre eso y más formas de hacer una copia profunda aquí https://javascript.plainenglish.io/how- para-copiar-profundamente-objetos-y-matrices-en-javascript-7c911359b089#:~:text=4.,objects%20are%20not%20really%20cloned .

puede que no sea bueno para ti. Por favor, comprueba la respuesta de Tibrogargan.

puedes usar el método de mapa de Javascript

 let data = { employees: [ { name: "Ram", email: "ram@gmail.com", age: 23 }, { name: "Shyam", email: "shyam23@gmail.com", age: 28 }, { name: "John", email: "john@gmail.com", age: 33 }, { name: "Bob", email: "bob32@gmail.com", age: 33 }, ], }; let newArray = data.employees.map((emp) => { if (emp.age == 33) emp.age = 1; return emp; }); console.log(newArray);

más sobre la función de mapa https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

almost 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error