Sum函數
回答
第一個問題解決這裏是解析coursePrice
了一些,要做到這一點,你可以使用String.prototype.replace()
然後將其更改爲數字。
是這樣的:
+coursePrice.replace(/[^0-9\.]+/g,"");
其中+
符號改變替換字符串爲一個數字。
現在讓我們回到您想要創建的兩個函數,首先讓我們創建一個具有函數getSchoolCoursePrice()
和getTotalSchoolCoursePrice()
的服務。
服務
.service('SchoolService', function() {
this.getSchoolCoursePrice = function(school) {
return school.professor.reduce(function(value, professor) {
return value + +professor.coursePrice.replace(/[^0-9\.]+/g,"");
}, 0.00);
};
this.getTotalSchoolCoursePrice = function(schools) {
return schools.reduce(function(value, school) {
return value + school.totalCoursePrice;
}, 0.00);
};
})
SchoolService.getSchoolCoursePrice()
獲得一所學校,總療程的價格,因爲你已經注意到了,該函數接受一個參數,它是一所學校。
SchoolService.getTotalSchoolCoursePrice()
另一方面,接受每個學校的totalCoursePrice
學校數組參數。迭代每個學校時使用totalCoursePrice
進行分配,然後使用SchoolService.getSchoolCoursePrice()
爲此分配此屬性。
控制器
.controller('SchoolController', function($scope, $http, SchoolService) {
$http.get('schools.json').success(function(schools) {
$scope.schools = schools.map(function(school) {
school.totalCoursePrice = SchoolService.getSchoolCoursePrice(school);
return school;
});
$scope.totalPrice = SchoolService.getTotalSchoolCoursePrice(schools);
});
});
正如你所看到的控制器,讀取的學校名單,然後附加一個totalCoursePrice
屬性,每個學校。
HTML
<table>
<tr>
<td>School</td>
<td>Total Course Price</td>
</tr>
<tr ng-show="!schools">
<td colspan="2">Loading...</td>
</tr>
<tr ng-repeat="school in schools track by $index">
<td ng-bind="school.school"></td>
<td ng-bind="school.totalCoursePrice"></td>
</tr>
<tr ng-show="schools">
<td>Total Price</td>
<td ng-bind="totalPrice"></td>
</tr>
</table>
我認爲這將讓你開始
// get numeric value and separate it by ','
var num = coursePrice.split('$')[1].split(",");
// concatenate numeric string
num = num[0] + num[1];
// turn it into a float
num = parseFloat(num);
下一次,不要指望別人做你的工作:
var sum = 0;
data.forEach(function(d) {
d.professor.forEach(function(p) {
var num = p.coursePrice.split('$')[1].split(",");
// concatenate numeric string
num = num[0] + num[1];
// turn it into a float
num = parseFloat(num);
allSum += num;
});
});
這將適用於所有學校,對於單個學校,您可以使用jQuery $ .grep函數完成此操作。
個別學校沒有$ .grep和jQuery:
var schools = [];
var schoolsSum = [];
data.forEach(function(d) {
if(schools.indexOf(d.school) == -1) {
schools.push(d.school);
schoolsSum.push(0);
}
var schoolIndex = schools.indexOf(d.school);
d.professor.forEach(function(p) {
var num = p.coursePrice.split('$')[1].split(",");
// concatenate numeric string
num = num[0] + num[1];
// turn it into a float
num = parseFloat(num);
allSum += num;
schoolsSum[schoolIndex] += num;
});
});
在這之後,你應該有一個包含學校名稱的兩個陣列之一,而該schols當然價格總和。您可以輕鬆地創建一個對象絲毫那兩個:
var schoolsObj = new Object();
var index = 0;
schools.forEach(function(s) {
schoolsObj[s] = schoolsSum[index];
index += 1;
});
我認爲這樣的事情@Teo unaControllers.contorller(「sumCoursePrice」,['$ scope','UNAService', function($ scope,UNAService ){ VAR總和= 0; UNAService.getAllSchools(功能(錯誤,數據){ 如果(錯誤!){ 總和+ = data.professors.coursePrice; } 返回總和; }); }] ); 但我不知道我是否可以做到這一點 – 2014-09-12 14:05:48
好吧,這是一個開始,但首先你需要將data.professors.coursePrice的值變成一個浮點數,我可以幫助你使用jQuery開始處理這個問題,但是你沒有如果您正在使用它,則不會在問題中指定。 – Teo 2014-09-12 14:08:00
AngularJS is javascript – 2014-09-12 14:09:44
- 1. Sum函數2008
- 2. PHP SUM函數
- 3. SQL - SUM函數
- 4. Sum函數
- 5. MySql SUM()函數
- 6. 使用SUM函數
- 7. 得到SUM函數
- 8. 使用SUM函數
- 9. Cast和Sum函數
- 10. python sum函數forloop
- 11. 使用函數SUM?
- 12. 有回調函數PHP Sum函數
- 13. SQL SUM()函數字段
- 14. 加入表的SUM函數
- 15. SUM函數與加盟
- 16. MDX SUM函數返回true
- 17. 濫用聚合函數SUM()
- 18. SUM函數沒有正確
- 19. Cast和Sum函數 - PostgreSQL
- 20. SQL中的SUM函數
- 21. Excel中VLOOKUP W/SUM函數
- 22. 子查詢中SUM函數
- 23. SPARQL中的SUM函數
- 24. 的Oracle 11g SQL Sum函數
- 25. MATLAB sum系列函數
- 26. Sum函數返回零
- 27. 擴展Pig SUM函數
- 28. MDX SUM函數和NULL值
- 29. MS Access 2003 - SUM函數
- 30. 我找不到函數SUM
是'coursePrice'真的格式化一個美元符號? – ryeballar 2014-09-12 13:50:08
是的它是:S im confuse – 2014-09-12 13:51:55
如果你有控制你的後端改變它爲一個無格式數字(沒有美元符號和逗號),那麼它更容易總結起來 – ryeballar 2014-09-12 13:52:34