javascript - 获取 ngRepeat 中对象键值的总和

标签 javascript arrays angularjs sum angularjs-ng-repeat

我正在尝试获取 ngRepeat 循环中所有对象的“amount”键的总和。我还需要根据另一个键来过滤该金额,该键代表花费该金额的人“姓名”。

例如,我想获取玛丽和刘易斯花费的总金额的单独值。我对 Angular 比较陌生,不确定完成此任务的正确方法。任何帮助将不胜感激。

HTML

<!-- Mary's Items -->
    <div class="col-md-4">
    <h1>Mary</h1>
  <div class="well" ng-repeat="post in posts | filter: {name: 'Mary' } | orderBy: 'created_at':true">
    <!-- exit a message -->

    <h4>{{post.title}}</h4>
    <h3>${{post.amount}}</h3>
    <p>{{post.details}}</p>
        <!-- delete message -->

  <p><a href="javascript:void(0);" class="pull-right glyphicon glyphicon-trash"  ng-click="messages.$remove(post)"></a></p>
  </div>
  </div>


  <!-- Lewis' Items -->
  <div class="col-md-4 col-md-offset-1">
  <h1>Lewis</h1>
  <div class="well" ng-repeat="post in posts | filter: {name: 'Lewis' } | orderBy: 'created_at':true">
    <!-- exit a message -->

    <h4>{{post.title}}</h4>
    <h3>${{post.amount}}</h3>
    <p>{{post.details}}</p>
    <p>{{post.created_at}}</p>
      <!-- delete message -->
  <p>
  <a href="#/edit/{{posts.indexOf(post)}}">edit</a>

  <a href="javascript:void(0);" class="pull-right glyphicon glyphicon-trash"  ng-click="removePost(post)" ng-confirm-click="Are you sure you want to remove this item?"></a>
  </p>
  </div>

JavaScript

spendingApp.controller("SpendingController", function($scope, $firebase,$stateParams) {


  //Setup Firebase DB and make available to app
  var ref = new Firebase("**Firebase URL**");
  var sync = $firebase(ref);
  $scope.posts = sync.$asArray();
  $scope.whichItem = $stateParams.itemId;
  console.log($stateParams);

  $scope.itemTitle = $scope.whichItem;

  // Add new Item to DB
  $scope.addPost = function() {
    $scope.posts.$add({
      name: $scope.itemName, 
      title: $scope.itemTitle, 
      details: $scope.itemDetails, 
      amount: parseFloat($scope.itemAmount),
      created_at:  Date()
    });
    // Clears values;
    $scope.itemName = "";
    $scope.itemAmount = "";
    $scope.itemTitle = "";
    $scope.itemDetails = "";
  }





});

JSON 示例

{
  "amount" : 16.04,
  "created_at" : "2014-08-17T17:40:18.846Z",
  "details" : "upgrade",
  "id" : 36,
  "name" : "Lewis",
  "title" : "Street Fighter Ultra",
  "updated_at" : "2014-08-17T17:40:18.846Z"
}, {
  "amount" : 19,
  "created_at" : "2014-08-17T17:41:08.341Z",
  "details" : "",
  "id" : 37,
  "name" : "Lewis",
  "title" : "Webfaction Web Hosting",
  "updated_at" : "2014-08-17T17:41:08.341Z"
}

最佳答案

尝试使用angular-filtersumFilter模块。
例如:
JS:

$scope.users = [
  { id: 1, name: 'Ariel', amount: 16.54 },
  { id: 2, name: 'Dan',   amount: 13.74 },
  { id: 3, name: 'Ron',   amount: 43.90 },
  { id: 4, name: 'Greg',  amount: 71.09 },
  { id: 5, name: 'Alex',  amount: 84.99 },
];

HTML:

<p>{{ users | map: 'amount' | sum }}</p>
<!--Result: 230.26 -->

关于javascript - 获取 ngRepeat 中对象键值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25554865/

相关文章:

javascript - javascript中的代码 Twig

javascript - ng 类不适用于对象和字符串

javascript - 获取已执行规范文件的文件名

javascript - 验证 2 个复选框和 2 个文本框以及一种日期格式

javascript - 从对象中检索数据

arrays - 类型 'Users.Type'没有下标成员

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

java - 我的选择排序代码在一个索引上失败

javascript - $sce.trustAsHtml() 过滤掉 img

javascript - 制作 jquery windows.onload ,而不是等待图像