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

あなたの関数はグローバルであるように見えるので、使用したりアクセスしたりするdataGroupByParentCategory必要はありません。また、あなたはタイプミスをしているようです。それは違いないthisthatdataGroupByParentCategory[parentCategory]dataGroupByParentCategory(parentCategory)

于 2013-06-15T21:28:10.123 に答える
0

After spending sometime with code, I realized I was doing it incorrectly, the actual code now is

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 に答える