2016-03-22 12 views
0

ich herauszufinden versuche, wenn dies möglich ist, in JavascriptMit array.length in Berechnungen

Ich habe ein Array von Objekten genannt Wagen, die product.quantity enthält, und ich möchte den Wert von cart.length verwenden in einer Berechnung aber ich bekomme immer NaN, obwohl der Typ eine Zahl ist. Kann mir bitte jemand helfen.

Das ist, was ich bisher versucht:

$scope.getCartTotals = function() { 
 
    var totalInCart = 0; 
 

 
    cartCount = $scope.cart.length; 
 
    $scope.cart.forEach(function(product) { 
 
    totalInCart += cartCount * product.quantity; 
 
    }); 
 

 
    return totalInCart; 
 
};
<body ng-controller="StoreController"> 
 
    <div ng-show="cart.length > 0">{{getCartTotals()}}</div> 
 
</body>

+1

Tyr initialisieren 'totalInCart'. Ie: 'var totalInCart = 0' – cl3m

+0

ich habe danke, habe den code erneut refaktoriert, wird posten, noch immer nicht das gewünschte ergebnis erreichen – Euan

+0

Kannst du auch deinen html-code posten? Wie rufen Sie Ihre '$ scope.getCartTotals()' Methode auf? Haben Sie versucht, Breakpoints einzurichten und die Werte zu überprüfen? – cl3m

Antwort

3

Sie zu undefined Zugabe, die NaN macht. Sie sollten initialisieren totalInCart-0:

var total = 0, 
    cartCount = $scope.cart.length, 
    totalInCart = 0; 
0

Sie verwenden ng-show hier, das die Methode getCartTotals für jeden Anruf wird und jeden Wert von cart.length.

ng-show verstecken gerade/Anzeigen von CSS Makeln aber ng-if nicht die HTML machen, wenn die Bedingung falsch ist und daher keine Ausführung von getCartTotals

So können Sie entweder ng-if oder Sie können nur die null/undefined Kontrollen machen in getCartTotals Verfahren für cart.length und product.quantity

+0

Danke, das hilft, das Element nicht zu zeigen, wenn 0 aber Berechnung ist mehr mein Problem – Euan

+0

Gr8. Sie können einfach upvote, wenn die Antwort Ihnen geholfen hat, wenn Sie genügend Ruf haben. – Harpreet

0

Eigentlich habe ich keine Ahnung von Ihren Warenkorb Objekt structure.According zu Informationen über Warenkorb Objekt zur Verfügung gestellt i eine Demo in Plunker erstellt haben. So können Sie auf Überprüfung unterhalb Plunker Link https://plnkr.co/edit/4tYc9UjrzqQXvFJuvW5Y?p=preview

0

ich die Antwort gefunden, und es war, dass ich versuche, vollständig mit den falschen Umfängen zu berechnen und hatte nichts mit der Länge des Arrays zu tun, damit diese ganze Frage ist jetzt ungültig, danke für alle hilfreichen Kommentare.