访问对象的属性有两种方法:
var obj = {a: 'foo', b: 'bar'};
obj.a //foo
obj['b'] //bar
或者,如果您需要动态执行此操作:
var key = 'b';
obj[key] //bar
如果您还没有将其作为对象,则需要转换它 https://stackoverflow.com/questions/4935632/how-to-parse-json-in-javascript.
对于更复杂的示例,我们假设您有一个代表用户的对象数组:
var users = [{name: 'Corbin', age: 20, favoriteFoods: ['ice cream', 'pizza']},
{name: 'John', age: 25, favoriteFoods: ['ice cream', 'skittle']}];
要访问第二个用户的年龄属性,您可以使用users[1].age
。要访问第一个用户的第二个“favoriteFood”,您可以使用users[0].favoriteFoods[2]
.
另一个例子:obj[2].key[3]["some key"]
这将访问名为 2 的数组的第三个元素。然后,它将访问该数组中的“key”,转到该数组的第三个元素,然后访问属性名称some key
.
正如 Amadan 指出的那样,讨论如何循环不同的结构可能也值得。
要循环数组,可以使用简单的 for 循环:
var arr = ['a', 'b', 'c'],
i;
for (i = 0; i < arr.length; ++i) {
console.log(arr[i]);
}
循环一个对象有点复杂。如果您绝对肯定该对象是普通对象,则可以使用普通对象for (x in obj) { }
循环,但添加一个更安全拥有自己的财产 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/hasOwnProperty查看。在您无法验证对象是否没有继承属性的情况下,这是必要的。 (它也对代码进行了一些未来的验证。)
var user = {name: 'Corbin', age: 20, location: 'USA'},
key;
for (key in user) {
if (user.hasOwnProperty(key)) {
console.log(key + " = " + user[key]);
}
}
(请注意,我假设您使用的任何 JS 实现都有console.log
。如果没有,你可以使用alert
或者某种 DOM 操作。)