【发布时间】:2014-05-22 11:23:05
【问题描述】:
我有一个带有一些数据的 JSON 文件,例如:
$scope.expenses = [
{
"amount": "100",
"SpentOn": "19/04/2014",
"IsExpensable": true,
},
{
"amount": "200",
"SpentOn": "20/04/2014",
"IsExpensable": true,
},
{
"amount": "50",
"SpentOn": "01/01/2014",
"IsExpensable": true,
},
{
"amount": "350",
"SpentOn": "01/09/2013",
"IsExpensable": false,
}
];
我正在尝试编写一个循环遍历上述内容的角度函数,当 IsExpensable=true 时,然后对 mm 和 yyyy 进行计数以确定该月发生了多少费用。所以在上面的例子中,2014 年 4 月有 2 个。2010 年 1 月有 1 个。
这是我的 JS:
$scope.MyDateFilterFunction = function () {
var data = [];
var dataMonth = [];
var dataYear = [];
var Jan = 0;
var Feb = 0;
var Mar = 0;
var Apr = 0;
var May = 0;
var May = 0;
var Jun = 0;
var Jul = 0;
var Aug = 0;
var Sep = 0;
var Oct = 0;
var Nov = 0;
var Dec = 0;
angular.forEach($scope.expenses, function (value, key) {
if (value.IsExpensable) {
angular.forEach($scope.expenses, function (value, key) {
data = value.SpentOn.split('/');
dataMonth = data[1];
dataYear = data[2];
var count = (dataMonth.split("04").length - 1)
console.log("April occurances" + count.length);
// Add count to var Apr
});
}
});
return data;
};
我的 HTML:
<td ng-repeat="exp in MyDateFilterFunction ()">
{[{exp}]}
</td>
更新:
已添加:
if (dataMonth == "04") {
Apr = Apr + 1;
console.log(Apr);
}
但是控制台输出是: 1 2 3 4 1 2 3 4 1 2 3 4
通过删除第二条angular.forEach 语句解决
【问题讨论】:
-
签出 underscore.js: underscorejs.org
-
@DavinTryon - 谢谢你的建议,我看看。但是我不希望将任何其他库导入我的应用程序
-
@OamPsy:您尝试过以下任何解决方案吗?它对你有用吗?如果是这样,请将其标记为已接受(如果您喜欢,请点赞)。
-
@ExpertSystem - 是的,我暂时同意你的想法,因为它允许我继续我的项目,尽管我可能需要在稍后阶段重新访问。
标签: javascript jquery angularjs angularjs-directive angularjs-scope