从 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.