[英]JavaScript - delete object properties in array of objects
Is there a better / shorter method to delete properties from objects in an array of objects than the below example.是否有比以下示例更好/更短的方法来从对象数组中的对象中删除属性。 I can use vanilla JS or lodash.
我可以使用 vanilla JS 或 lodash。
Exmaple function:例如 function:
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;
}
You can use omit
from Lodash to exclude properties:您可以使用 Lodash 中的
omit
来排除属性:
function stripObjProps(arr) {
return arr.map(item => _.omit(item, ['isBounded', 'isDraggable', 'isResizable', 'maxH', 'maxW', 'minH', 'minW', 'resizeHandles', 'moved', 'static']));
}
const newArray = stripObjProps(originalArray)
Additionally, you can use pick
instead of omit
.此外,您可以使用
pick
而不是omit
。 In case of pick
you specify only the properties which you want to keep.在
pick
的情况下,您仅指定要保留的属性。
I can think of two ways我可以想到两种方法
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]);
}
}
or - assuming newLay
is a typo或者 - 假设
newLay
是错字
function stripObjProps(arr) {
return arr.map(item => {
let {
isBounded,
isDraggable,
isResizable,
maxH,
maxW,
minH,
minW,
resizeHandles,
moved,
static,
...ret
} = item;
return ret;
});
}
NOTE: no need for _.clone
in this second example, since you aren't doing a deep clone, map returns a new array with a new object ( ...ret
)注意:在第二个示例中不需要
_.clone
,因为您没有进行深度克隆,map 返回一个带有新 object ( ...ret
) 的新数组
However, I don't use lodash, so there may be an even better way with that library但是,我不使用 lodash,因此该库可能有更好的方法
Another way to remove properties with filter
and Object entries
/ fromEntries
.另一种使用
filter
和 Object entries
/ 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}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.