gpt4 book ai didi

javascript - 删除对象成员并且不留下未定义的最佳方法是什么

转载 作者:行者123 更新时间:2023-11-30 07:55:41 25 4
gpt4 key购买 nike

删除对象成员并且不留下未定义的最佳方法是什么如

var o = {
a: 1,
b: 2,
c: 3
};
delete o['a']

for 循环遍历 o 会得到一个未定义的成员。我已经运行了 lodash,但是 _.unset 似乎没有用

谢谢,

肖恩。

最佳答案

delete 是方法。 As adeneo said , delete 不会留下任何东西。一旦您删除 o.ao 就没有a 属性根本1 你会看到 undefined 的唯一原因是你无论如何都要请求该属性,因为请求一个对象上不存在的属性的值会返回 undefined.

for a for loop over o will get us an undefined membe

不是任何基于o 实际属性的循环。例如,不是这个:

var o = {
a: 1,
b: 2,
c: 3
}
delete o.a; // delete o['a']; also works
for (var name in o) {
console.log(name + ": " + o[name]);
}


1 实际上,可以创建一个无法删除的属性(通过使该属性不可配置),但可以删除普通属性。以下是创建不可配置属性的方法:

var o = {};
Object.defineProperty(o, "a", {
value: 42,
writable: true,
enumerable: true
});
console.log(o.a); // 42
delete o.a;
console.log(o.a); // still 42

通过不包括 configurable: true,我们使该属性不可配置。

如果您使用严格模式,尝试删除不可配置的属性是错误的:

"use strict";
var o = {};
Object.defineProperty(o, "a", {
value: 42,
writable: true,
enumerable: true
});
console.log(o.a); // 42
delete o.a; // throws error
console.log(o.a);

关于javascript - 删除对象成员并且不留下未定义的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40320355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com