Angular JS:如何对@scope.object 中的所有变量求和

凯瓦尔·拉吉

Angular JS:如何对里面的所有变量求和@scope.object

我有一个$scope.Growth内部有多个变量的对象我怎样才能以最简单的方式总结所有这些?

$scope.Growth

阿卢安·哈达德
Object.values($scope.Growth)
  .filter(value => !isNaN(value))
  .reduce((sum, value) => sum + value, 0)

这工作由

  1. 获取对象中每个属性的值数组

  2. 过滤掉任何不能转换为有效数字的值

  3. 通过减少过滤后的数组来汇总所有值。

如果您处于较旧的运行时并且没有Object.values可用功能,则可以按如下方式编写

Object.keys($scope.Growth)
  .map(function (key) {return $scope.Growth[key];})
  .filter(function (value) {return !isNaN(value);})
  .reduce(function (sum, value) {return sum + value;}, 0)

这是它在行动中的一个例子

const $scope = {
  Growth: {
    a: 1,
    b: 2,
    c: 3
  }
};

const sum = Object.values($scope.Growth)
  .filter(value => !isNaN(value))
  .reduce((sum, value) => sum + value, 0);
  
console.info(sum);

请注意,如果您需要将数据绑定到 AngularJS 模板中的结果,问题中未提及但可以从名称中得到建议$scope,您可以编写类似

(function() {

  AppController.$inject = ['$scope'];
  function AppController($scope) {
    $scope.Growth = {
      a: 1,
      b: 2,
      c: 3
    };
    $scope.growthSum = () => Object.values($scope.Growth)
      .filter(value => !isNaN(value))
      .reduce((sum, value) => sum + value, 0);
  }

  const app = angular
    .module('app', [])
    .controller({
      AppController
    });

  angular.bootstrap(document.getElementById('app'), [app.name], {
    ngStrictDi: true
  });
}());
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js">
</script>
<div id="app" ng-controller="AppController">
  {{growthSum()}}
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章