2017-07-15 52 views

回答

0
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提及,但suggestable,你會喜歡寫東西

(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>

+0

即時得到了Object.values無效的錯誤() –

+0

@KevalRaj我添加了一個與舊的運行時兼容的版本。如果失敗了,那麼這個對象就不是你所指示的 –

+0

即時獲取visual studio中的語法錯誤。我錯過了什麼嗎? (value =>!isNaN(value)).reduce((sum,value)=> sum + value, 0) –