var result = [ { color: "blue", users: [ { "name": "John", "color": "blue", "age": "29" }, { "name": "Neil", "color": "blue", "age": "34" } ] }, { color: "green", users: [ { "name": "Ronn", "color": "green", "age": "50" } ] } ] Quiero eliminar la clave de color en users . Para ello, he escrito el siguiente fragmento de código en Lodash.
var result = _.omit(result.users, ['color']); Pero me da lo siguiente { ... }
¿Cómo se puede lograr el siguiente resultado?
[ { color: "blue", users: [ { "name": "John", "age": "29" }, { "name": "Neil", "age": "34" } ] }, { color: "green", users: [ { "name": "Ronn", "age": "50" } ] } ]Tienes que recorrer la matriz y usar omit
Arguments of omit is
1) objeto: El objeto fuente.
2) [rutas] (…(cadena|cadena[])): Las rutas de propiedad a omitir.
Return value
(Objeto): Devuelve el nuevo objeto.
const clone = result.map((obj) => ({ ...obj, users: obj.users.map((o) => _.omit(o, ["color"])), }));Demo en vivo
Puede lograr fácilmente el resultado usando Vanilla JS usando el map como:
var result = [ { color: "blue", users: [ { name: "John", color: "blue", age: "29", }, { name: "Neil", color: "blue", age: "34", }, ], }, { color: "green", users: [ { name: "Ronn", color: "green", age: "50", }, ], }, ]; const res = result.map((obj) => ({ ...obj, users: obj.users.map(({ color, ...rest }) => rest)})); console.log(res);