如何从包含对象数组的此对象中读取?

时间:2015-06-20 19:40:51

标签: javascript arrays json object google-chrome-extension

我有一个包含对象数组的对象。我可以将这些数据保存到chrome.storage中。也能够将数据作为对象返回。但我完全坚持如何阅读这个......

说,我有以下数据:

var x = {'data': [{name: '', id: '', url: '', 
'dataquery': [{name: '', url: '', lookfor: '', getback: ''}] }] };

现在说,我将其保存到chrome存储(使用set),然后将此数据作为对象'd'(使用get)返回,如何访问,比如说第一个数组的id或url?不应该是这样的:

d.data[0].url // ??

但这会产生错误。我究竟做错了什么?什么是正确的语法?

编辑,有更多详细信息:以下是用于设置和获取数据的代码:

// SETTING THE DATA
chrome.storage.sync.set(x, function() {
console.log('STORED'); });

// GETTING THE DATA
var d;
chrome.storage.sync.get('data', function(data) {
    d = data;
    console.log(d);
});

alert(d.data[0].loginurl);

我可以从我的控制台日志中看到数据已经正确存储和检索。我可以在console.log中看到数据(作为对象)(展开时显示数组和所有元素)。

但警报线,出现以下错误: '未捕获的TypeError:无法读取未定义的'

的属性“数据”

2 个答案:

答案 0 :(得分:0)

您能否向我们提供相关代码的摘录?

我猜你应该这样读:

chrome.storage.sync.get('YOUR_NAME_HERE', function(d) {
  console.log(d);
}

你会看到你的回报。

答案 1 :(得分:-2)

我明白了。这是一个简单的错误,已经宣布变量' d'在外面使它成为一个全局变量。但是没有初始化它..

var d; // <- Forgot to initialize the variable
chrome.storage.sync.get('data', function(data) {
    d = data;
    console.log(d);
});

alert(d.data[0].loginurl);

所以它仍然作为一个局部变量,它的价值超出了&#39; get&#39;功能显示为&#39; undefined&#39;。