Tenemos una variedad de objetos como
const arr = [{id: "someId", name: {...}}, ...]; const skippedKeys = ["id"...]¿Cómo puedo filtrar la matriz de objetos en función de las claves omitidas? El resultado debería ser:
const result = [{name: {...}}, ...];Además, no quiero hacer un ciclo dentro del ciclo. el resultado también podría implementarse utilizando la biblioteca lodash. también deberíamos eliminar la clave con valor.
Como dijiste que podría implementarse usando lodash, aquí hay un código que usa lodash:
let result = _.map(arr, (el)=> _.omit(el, skippedKeys))Es simple y no necesita ciclos anidados. Hay dos opciones para hacer eso
includes const result = arr.filter((item) => !result.includes(item.id));set const dataSet = new Set(skippedKeys); const result = arr.filter((item) => !dataSet.has(item.id));Prefiero el segundo ya que excluye los controles dobles. Espero que la respuesta haya sido útil.
const result = arr.map(obj => Object.keys(obj).reduce( (res, key) => ( skippedKeys.includes(key) ? res : {...res, [key]: obj[key]} ), {}, ));