提问者:小点点

Javascript中的JSON响应解析以获取键/值对[duplicate]


我如何只在Javascript中获得每个对象的名称和值?


共1个答案

匿名用户

有两种方法可以访问对象的属性:

var obj = {a: 'foo', b: 'bar'};

obj.a //foo
obj['b'] //bar

或者,如果需要动态地执行:

var key = 'b';
obj[key] //bar

如果您还没有将其作为对象,则需要对其进行转换。

对于一个更复杂的示例,让我们假设您有一个表示用户的对象数组:

var users = [{name: 'Corbin', age: 20, favoriteFoods: ['ice cream', 'pizza']},
             {name: 'John', age: 25, favoriteFoods: ['ice cream', 'skittle']}];

若要访问第二个用户的age属性,可以使用users[1].age。若要访问第一个用户的第二个“FavoriteFood”,请使用users[0].favoriteFoods[2]

另一个示例:obj[2].key[3][“some key”]

它将访问名为2的数组的第3个元素。然后,它将访问该数组中的'key',转到该数组的第三个元素,然后访问属性名some key

正如Amadan所指出的,可能还值得讨论如何在不同的结构上循环。

要在数组上循环,可以使用简单的for循环:

var arr = ['a', 'b', 'c'],
    i;
for (i = 0; i < arr.length; ++i) {
    console.log(arr[i]);
}

在对象上循环要复杂一些。如果您完全肯定对象是普通对象,则可以使用普通for(xinobj){}循环,但添加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操作。)