gpt4 book ai didi

javascript循环和删除对象属性

转载 作者:行者123 更新时间:2023-12-03 03:17:14 24 4
gpt4 key购买 nike

我有一个具有各种属性的对象。对象的名称是全局变量,但属性在运行时通过方法更改。有些方法向对象添加属性。我想添加一个方法来循环该对象并删除其所有为 null 或空的属性。我可以通过指定其名称并检查其状态来检查每个属性,但如果我稍后添加属性,我也必须更新此清理方法。如何在不首先知道属性名称的情况下循环访问对象的属性。

感谢您的建议。

最佳答案

对象的迭代很简单 - for in 循环:

for (var key in object) {
if (object.hasOwnProperty(key)) {
//Now, object[key] is the current value
if (object[key] === null || isEmpty(object[key]))
delete object[key];
}
}

isEmpty 不存在,您必须定义它或将其替换为更有意义的内容,我无法理解您的问题中的空是什么意思。

我使用object.hasOwnProperty,因为对象继承自Object.prototype以及可能其他地方的东西(例如数组继承自Array.prototype ,继承自Object.prototype)。所以:

object.toString; //function toString() { [native code] }

但是,object.toString实际上指的是Object.prototype.toString - 它并不真正在您的对象中,但是当您输入object.toString时,解释器发现没有 object.toString,因此它检查原型(prototype)链直到找到它。

hasOwnProperty 检查对象上是否确实存在键:

object.hasOwnProperty("toString"); //false
object.foo = "bar";
object.hasOwnProperty("foo"); //true

下标访问对象也很简单:

var object = {foo: "bar"};
object.foo; //"bar"
object["foo"]; //"bar"

var key = "foo";
object[key]; //"bar"

请注意,传递到括号的任何内容都会转换为字符串。例如,您可以这样做:

object[Object.prototype.toString] = "magic";

Object.keys(object); //["function toString() { [native code] }"]

如果您想知道,Object.keys是 ES5 (EcmaScript 5) 功能。

关于javascript循环和删除对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7789014/

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