循环访问对象中的键值

时间:2013-09-18 14:12:25

标签: javascript

我从localstorage获取一组对象:

saved_selection = window.localStorage.getItem('match_selection');

console.log('saved selection obj is ');
console.log(saved_selection);

输出结果为:

{"236":"Forward_2","243":"Forward_1"} 

现在我想循环并获取密钥和值。所以我这样做:

for(var index in saved_selection) {
    console.log(index + " -> " + saved_selection[index]); 
}

但我明白了:

0 -> { 
1 -> " 
2 -> 2 
3 -> 3 

等,而不是:

236 -> Forward_2
243 -> Forward_1

如何实现所需的输出?

3 个答案:

答案 0 :(得分:2)

您想要解析localStorage返回的字符串:

saved_selection = JSON.parse( window.localStorage.getItem('match_selection') );

答案 1 :(得分:1)

这意味着{"236":"Forward_2","243":"Forward_1"}字符串的实例,而不是对象
为了

var v1 = '{"236":"Forward_2","243":"Forward_1"}';

这不起作用,但是

var v2 = {"236":"Forward_2","243":"Forward_1"};  

您应该使用 JSON.parse 方法将String转换为Object

saved_selection = JSON.parse(saved_selection);
for(var index in saved_selection) {
    console.log(index + " -> " + saved_selection[index]); 
}

答案 2 :(得分:1)

您,我的朋友正在尝试获取完整字符串化对象的索引。它不起作用。首先,您必须使用JSON.parse()对其进行解析并将其分解为单个组件。

看下面:

<强> JS:

var saved_selection = JSON.parse('{"236":"Forward_2","243":"Forward_1"}') ;

var saved_selection1 = '{"236":"Forward_2","243":"Forward_1"}' ;

for(var index in saved_selection) {
    console.log(index + " -> " + saved_selection[index]); 
}
for(var index in saved_selection1) {
    console.log(index + " -> " + saved_selection1[index]); 
}

第一个for循环返回所需的O / P,但第二个没有。

在这里找到工作小提琴:http://jsfiddle.net/eMVNk/2/