从 JSON 中检索键值
Retrieve a key value from JSON
我有一个日历。在它的代码中有一个 Object 和一个 JSON ,它包含几个属性,例如
[{"Date":"17-3-2015","Event":"Test drive","Participants":"John, George","Description":"Testing a new F30"},
{"Date":"17-3-2015","Event":"Football match","Participants":"FCSM vs FCKK","Description":"New season start"},
{"Date":"25-3-2015","Event":"Jane's Birthday","Participants":"Jane, John, Richard, Alice","Description":"Celebration with my friends"}]
但由于该数据在 localStorage 中,我通过
检索了它
var existEvents = JSON.parse(localStorage.getItem('events'));
for(i=0; i<existEvents.length; i++) {
var item = localStorage.getItem(localStorage.key(i));
console.log(item);
};
existEvents
= 我日历中的每个新事件
console.log(item);
returns 我上面输入的数据。
我需要的是检索每个日期值(= 键)。所以我假装
item.Date
一定能用,但没用。以及
item[0].value
看完这个问题+答案我试了一下
Access / process (nested) objects, arrays or JSON
我做错了什么?请帮忙!
使用 Array.ForEach() 的好方法,它也可用于循环对象,其值作为第一个参数,键(如果存在)作为第二个参数。在您的示例中, for each 获取此数组,并在其上循环一次检索一个对象。
此对象中有一个 Date
键,因此您可以使用 obj.key
访问它。但是,最好先使用 .hasOwnProperty
检查密钥是否存在。
你也可以使用forEach
循环遍历对象键,然后你就可以得到obj/key
。例如,循环数组循环中的每个 obj
将得到 obj => 17-3-2015 | key => Date
... 等
var x = [{"Date":"17-3-2015","Event":"Test drive","Participants":"John, George","Description":"Testing a new F30"},
{"Date":"17-3-2015","Event":"Football match","Participants":"FCSM vs FCKK","Description":"New season start"},
{"Date":"25-3-2015","Event":"Jane's Birthday","Participants":"Jane, John, Richard, Alice","Description":"Celebration with my friends"}];
x.forEach(function(obj,key){console.log(obj.Date) });
您的代码可以是:
JSON.parse(localStorage.getItem('events')).forEach(function(obj,key){console.log(obj.Date) });
我认为您不需要在 for 循环中返回到 localstorage,因为您已经将所有数据保存在变量 existEvents 中。
var existEvents = JSON.parse(localStorage.getItem('events'));
for(i=0; i<existEvents.length; i++) {
var item = existEvents[i];
console.log(item);
};
HTML5 LocalStorage 是一个关联数组存储,getItem
函数获取其中一项。所以,
localStorage.getItem ("somekey")
returns 变量 somekey
被设置为什么。在您的代码片段中,您存储在 localStorage
中的变量是一个恰好采用 JSON 形式的字符串。 JSON.parse ()
将 JSON 转换为由您存储的字符串表示的实际数组。
var existEvents = JSON.parse (localStorage.getItem ('events'));
for (var i = 0; i < existEvents.length; i++) {
var item = existEvents [i];
console.log(item);
};
existEvents
是一个 Array 对象,因此您可以像平常一样访问它。从 localStorage
检索并解析后,您不再需要访问 localStorage.getItem
.
我有一个日历。在它的代码中有一个 Object 和一个 JSON ,它包含几个属性,例如
[{"Date":"17-3-2015","Event":"Test drive","Participants":"John, George","Description":"Testing a new F30"},
{"Date":"17-3-2015","Event":"Football match","Participants":"FCSM vs FCKK","Description":"New season start"},
{"Date":"25-3-2015","Event":"Jane's Birthday","Participants":"Jane, John, Richard, Alice","Description":"Celebration with my friends"}]
但由于该数据在 localStorage 中,我通过
检索了它var existEvents = JSON.parse(localStorage.getItem('events'));
for(i=0; i<existEvents.length; i++) {
var item = localStorage.getItem(localStorage.key(i));
console.log(item);
};
existEvents
= 我日历中的每个新事件
console.log(item);
returns 我上面输入的数据。
我需要的是检索每个日期值(= 键)。所以我假装
item.Date
一定能用,但没用。以及
item[0].value
看完这个问题+答案我试了一下 Access / process (nested) objects, arrays or JSON
我做错了什么?请帮忙!
使用 Array.ForEach() 的好方法,它也可用于循环对象,其值作为第一个参数,键(如果存在)作为第二个参数。在您的示例中, for each 获取此数组,并在其上循环一次检索一个对象。
此对象中有一个 Date
键,因此您可以使用 obj.key
访问它。但是,最好先使用 .hasOwnProperty
检查密钥是否存在。
你也可以使用forEach
循环遍历对象键,然后你就可以得到obj/key
。例如,循环数组循环中的每个 obj
将得到 obj => 17-3-2015 | key => Date
... 等
var x = [{"Date":"17-3-2015","Event":"Test drive","Participants":"John, George","Description":"Testing a new F30"},
{"Date":"17-3-2015","Event":"Football match","Participants":"FCSM vs FCKK","Description":"New season start"},
{"Date":"25-3-2015","Event":"Jane's Birthday","Participants":"Jane, John, Richard, Alice","Description":"Celebration with my friends"}];
x.forEach(function(obj,key){console.log(obj.Date) });
您的代码可以是:
JSON.parse(localStorage.getItem('events')).forEach(function(obj,key){console.log(obj.Date) });
我认为您不需要在 for 循环中返回到 localstorage,因为您已经将所有数据保存在变量 existEvents 中。
var existEvents = JSON.parse(localStorage.getItem('events'));
for(i=0; i<existEvents.length; i++) {
var item = existEvents[i];
console.log(item);
};
HTML5 LocalStorage 是一个关联数组存储,getItem
函数获取其中一项。所以,
localStorage.getItem ("somekey")
returns 变量 somekey
被设置为什么。在您的代码片段中,您存储在 localStorage
中的变量是一个恰好采用 JSON 形式的字符串。 JSON.parse ()
将 JSON 转换为由您存储的字符串表示的实际数组。
var existEvents = JSON.parse (localStorage.getItem ('events'));
for (var i = 0; i < existEvents.length; i++) {
var item = existEvents [i];
console.log(item);
};
existEvents
是一个 Array 对象,因此您可以像平常一样访问它。从 localStorage
检索并解析后,您不再需要访问 localStorage.getItem
.