gpt4 book ai didi

javascript - 如果我不知道名称,如何访问 javascript 对象的属性?

转载 作者:IT王子 更新时间:2023-10-29 02:39:21 25 4
gpt4 key购买 nike

假设你有一个像这样的 javascript 对象:

var data = { foo: 'bar', baz: 'quux' };

您可以通过属性名称访问属性:

var foo = data.foo;
var baz = data["baz"];

但是,如果您不知道属性的名称,是否有可能获得这些值?这些属性的无序性质是否导致无法区分它们?

在我的例子中,我特别考虑了这样一种情况:函数需要接受一系列名称-值对,但属性的名称可能会改变。

到目前为止,我对如何做到这一点的想法是将属性的名称与数据一起传递给函数,但这感觉像是一个 hack。如果可能的话,我更愿意通过内省(introspection)来做到这一点。

最佳答案

你可以像这样遍历键:

for (var key in data) {
console.log(key);
}

这会记录“名称”和“值”。

如果你有一个更复杂的对象类型(不仅仅是一个普通的类似散列的对象,就像在原来的问题中那样),你会希望只循环遍历属于对象本身的键,而不是对象的 prototype :

for (var key in data) {
if (data.hasOwnProperty(key)) {
console.log(key);
}
}

如您所述,不能保证 key 以任何特定顺序排列。请注意这与以下内容有何不同:

for each (var value in data) {
console.log(value);
}

此示例循环遍历值,因此它将记录 Property Name0。注意:for each大多数语法仅在 Firefox 中受支持,而在其他浏览器中不受支持。

如果您的目标浏览器支持 ES5,或者您的站点包含 es5-shim.js (推荐),你也可以使用Object.keys:

var data = { Name: 'Property Name', Value: '0' };
console.log(Object.keys(data)); // => ["Name", "Value"]

并循环Array.prototype.forEach :

Object.keys(data).forEach(function (key) {
console.log(data[key]);
});
// => Logs "Property Name", 0

关于javascript - 如果我不知道名称,如何访问 javascript 对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675231/

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