1

这是我的代码

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,但不太熟悉范围的概念,这会导致问题吗?

4

2 回答 2

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;
};
于 2013-06-15T21:31:18.770 回答
0

看来您的dataGroupByParentCategory功能是全局的,因此您不需要使用thisthat访问它。此外,您似乎在dataGroupByParentCategory[parentCategory]. 肯定是dataGroupByParentCategory(parentCategory)

于 2013-06-15T21:28:10.123 回答