¿Existe un método mejor/más corto para eliminar propiedades de objetos en una matriz de objetos que el siguiente ejemplo? Puedo usar vainilla JS o lodash.
Función de ejemplo:
function stripObjProps(arr) { let newArr = _.clone(arr); for (let i = 0; i < arr.length; i += 1) { delete newArr[i].isBounded; delete newArr[i].isDraggable; delete newArr[i].isResizable; delete newArr[i].maxH; delete newArr[i].maxW; delete newArr[i].minH; delete newArr[i].minW; delete newArr[i].resizeHandles; delete newArr[i].moved; delete newArr[i].static; } return newArr; }Puede usar omit from Lodash para excluir propiedades:
function stripObjProps(arr) { return arr.map(item => _.omit(item, ['isBounded', 'isDraggable', 'isResizable', 'maxH', 'maxW', 'minH', 'minW', 'resizeHandles', 'moved', 'static'])); } const newArray = stripObjProps(originalArray) Además, puede usar pick en lugar de omit . En caso de pick , especifique solo las propiedades que desea conservar.
Puedo pensar en dos formas
function stripObjProps(arr) { let newArr = _.clone(arr); for (let i = 0; i < newLay.length; i += 1) { [ "isBounded", "isDraggable", "isResizable", "maxH", "maxW", "minH", "minW", "resizeHandles", "moved", "static" ].forEach(k => delete newArr[i][k]); } } o - suponiendo que newLay es un error tipográfico
function stripObjProps(arr) { return arr.map(item => { let { isBounded, isDraggable, isResizable, maxH, maxW, minH, minW, resizeHandles, moved, static, ...ret } = item; return ret; }); } NOTA: no es necesario _.clone en este segundo ejemplo, ya que no está haciendo una clonación profunda, el mapa devuelve una nueva matriz con un nuevo objeto ( ...ret )
Sin embargo, no uso lodash, por lo que puede haber una forma aún mejor con esa biblioteca .
Otra forma de eliminar propiedades con filter y entries de objetos / fromEntries .
const data = [ { a: 1, b: 2, c: 3, d: 4, e: 5 }, { a: 1, b: 2, c: 3, d: 4, e: 5 }, { a: 1, b: 2, c: 3, d: 4, e: 5 }, ]; const excludeKeys = ['b', 'c', 'd']; const exclude = (obj) => Object.fromEntries( Object.entries(obj) .filter(([key]) => !excludeKeys.includes(key))); const result = data.map(exclude); console.log(result); .as-console-wrapper {max-height: 100% !important; top: 0}