这是我的代码
var dataGroupByParentCategory = function(data){
return _.groupBy(data, function(entry){
return entry.category.parent;
});
};
var parentCategorySum = function(data) {
var result = {};
_.forEach(_.keys(this.dataGroupByParentCategory(data)), function(parentCategory){
var that = this;
console.log(parentCategory);
var s = _.reduce(that.dataGroupByParentCategory[parentCategory], function(s, entry){
console.log('>' + entry); // Can not see entry here
return s + parseFloat(entry.amount);
}, 0);
result[parentCategory] = s;
});
return result;
};
和数据看起来像
'data': [
{
'category': {
'uri': '/categories/0b092e7c-4d2c-4eba-8c4e-80937c9e483d',
'parent': 'Food',
'name': 'Costco'
},
'amount': '15.0',
'debit': true
},
{
'category': {
'uri': '/categories/d6c10cd2-e285-4829-ad8d-c1dc1fdeea2e',
'parent': 'Food',
'name': 'India Bazaar'
},
'amount': '10.0',
'debit': true
},
{
'category': {
'uri': '/categories/d6c10cd2-e285-4829-ad8d-c1dc1fdeea2e',
'parent': 'Food',
'name': 'Sprouts'
},
'amount': '11.1',
'debit': true
}, ...
问题?
我看不到上面代码中的条目值
console.log('>' + entry); // Can not see entry here
我正在学习JavaScript并且不太了解范围的概念,这是否会导致问题?
答案 0 :(得分:0)
您的dataGroupByParentCategory
功能似乎是全局的,因此您无需使用this
或that
来访问它。你似乎也在dataGroupByParentCategory[parentCategory]
中输错了。必须是dataGroupByParentCategory(parentCategory)
答案 1 :(得分:0)
在用代码花了一些时间之后,我意识到我做错了,实际的代码现在是
var parentCategorySum = function(data) {
var result = {};
var dataGroupByParent = dataGroupByParentCategory(data);
_.forEach(_.keys(dataGroupByParent), function(parentCategory){
var s = _.reduce(dataGroupByParent[parentCategory], function(s, entry){
return s + parseFloat(entry.amount);
}, 0);
result[parentCategory] = s;
});
return result;
};