【发布时间】:2013-10-25 23:02:43
【问题描述】:
我有以下功能:
function getAggregateData(){
var sums = new Object();
$.getJSON("example.json.php", function(data) {
//for each month
c = 0;
$.each(data, function(key, val, index) {
//for each store
$.each(val, function(key2, val2, index2) {
if(c == 0){
sums[key2] = val2;
}
else{
sums[key2] += val2;
}
});
c++
});
})
return sums;
}
然后我这样称呼:
var totals = getAggregateData();
但是当我控制台日志时,我完全被难住了:
console.log(totals)
显示这样的对象:
store1 500
store2 900
store3 750
and so on and so forth...
但是当我使用console.log(totals['store1') 时,我会变得不确定。
我也试过console.log(totals.store1)
和console.log(totals[0].store1)
我遇到了某种类型的范围问题,或者我没有创建我认为的对象。
【问题讨论】:
-
这些
console.log()调用在哪里运行? -
来自服务器的原始 JSON 看起来如何?
-
你应该避免使用 Object.new,使用
var sums = {}see javascript-good-parts/bad-parts。此外,您还缺少c变量前面的 var 关键字。 -
@quantas,紧随 var totals = getAggregateData();
-
我在 Chrome 控制台中生成了以下内容:gist.github.com/olleicua/7163441 这正是我所期望的。这表明您的 AJAX 调用可能没有返回您的想法。
标签: javascript object scope