Javascript 如何读取包含对象数组的对象?
我有一个包含对象数组的对象。我能够将这些数据保存到chrome.storage中。还可以将数据作为对象返回。但我完全被困在如何从中解读 比如说,我有以下数据:Javascript 如何读取包含对象数组的对象?,javascript,arrays,json,object,google-chrome-extension,Javascript,Arrays,Json,Object,Google Chrome Extension,我有一个包含对象数组的对象。我能够将这些数据保存到chrome.storage中。还可以将数据作为对象返回。但我完全被困在如何从中解读 比如说,我有以下数据: var x = {'data': [{name: '', id: '', url: '', 'dataquery': [{name: '', url: '', lookfor: '', getback: ''}] }] }; 现在,我将其保存到chrome存储中(使用set),然后将该数据作为对象“d”(使用get)返回,我如何访问,
var x = {'data': [{name: '', id: '', url: '',
'dataquery': [{name: '', url: '', lookfor: '', getback: ''}] }] };
现在,我将其保存到chrome存储中(使用set),然后将该数据作为对象“d”(使用get)返回,我如何访问,比如说第一个数组的id或url?不应该是这样吗:
d.data[0].url // ??
chrome.storage.sync.get('YOUR_NAME_HERE', function(d) {
console.log(d);
}
但这是一个错误。我做错了什么?正确的语法是什么
编辑,包含更多详细信息:以下是我用来设置和获取数据的代码:
// 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中看到数据(作为对象)(展开时显示数组和所有元素)
但警告行给出了以下错误:
'Uncaught TypeError:无法读取未定义'的属性'data'。您能给我们一个相关代码的摘录吗 我猜你应该这样读:
d.data[0].url // ??
chrome.storage.sync.get('YOUR_NAME_HERE', function(d) {
console.log(d);
}
你会看到你得到了什么回报。我知道了。这是一个简单的错误,在外部声明变量“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);
var d;//这是正确的语法。。。会给你想要的。您需要展示如何获得d
(可能还有更多)。我的猜测是,你有一个好的副本,用我如何设置和获取数据的代码编辑这个问题。但是,我可以看到我的数据已经从console.log中正确存储了。所以我想我的语法是正确的,但是我需要将从存储中得到的对象转换成其他格式。我尝试了stringify,但它返回“undefined”(当我尝试在页面或console.log上发布“stringify”输出时)…在我所做的中似乎有一个答案。。它已经正确地存储了数据。。我可以在console.log中将我的数据视为一个对象。是否发布该输出?它显示在console日志中:>object:{data:Array[1]},当您单击它展开时,它会显示其中的所有数据以及所有节点。。让我看看如何发布更多关于这个的信息。你仍然会有同样的问题。get
函数是异步的。您不能假设当您到达最后一行代码时,它已经完成了。事实上,它可能不会完成。相反,一切都必须发生在匿名函数(data){}
中。请参阅我提供的链接。