IE doesn't support for..of
, so können Sie entweder transpile Code (zB with Babel) oder verwenden Sie eine gute alte forEach
:
this.cartShop.forEach(function(item) {
if (...) { ... }
}, this);
aktualisieren: Ich sehe jetzt, dass im Inneren des if
blockieren, es gibt eine return
Anweisung, um früh aus der Funktion auszubrechen, und deshalb verhält sich der Code, den ich vorschrieb, anders. Ich empfehle diese Art von Ansatz nicht, da dies zu unerwartetem Verhalten und Codeverdopplung führt. Als eine Norm, verlassen Sie eine Schleife mit break
.
Ich sehe Sie sich vorher vergewissert werden, wenn der Artikel in den Warenkorb gelegt ist: Sie können es find
verwenden können:
var item = this.cartShop.find(function(item) {
return item.name === name && ...
});
if (item) {
item.quantity += quantity;
} else {
item = new this.Item(...);
this.cartShop.push(item);
}
this.saveLocalCart();
Leider find
ist wieder nicht in IE zur Verfügung, aber im Gegensatz zu for..of
können Sie stellen Sie einfach eine polyfill. Alternativ können Sie immer Ihren alten Code mit einer klassischen for
Schleife verwenden:
for (var i = 0; i < this.cartShop.length; i++) {
var item = this.cartShop[i];
if (...) { ... }
}
Wortreicher, weniger lesbar, aber immer noch wirksam.
IE unterstützt 'for ... of' nicht, das ist es eben. – MaxArt
Was ist die Alternative dann lol? – Vocaloidas
Ich werde dann eine Antwort dafür hinzufügen. – MaxArt