2017-08-06 45 views
1

我有以下代碼:存儲數據的JavaScript

var cart = {}; 
for (i = 0; i < len; i++) { 
    cart.item_name = items[i].get("item_name"); 
    cart.quantity = items[i].get("quantity"); 
    cart.amount = items[i].get("amount"); 
    cart.total = cart.amount * cart.quantity; 
    cart.subtotal = cart.subtotal + cart.total; 
    } 
console.log(cart); 

我想item_namequantityamounttotalsubtotal要在每個循環過程中存儲的數組cart中的數據。但是隻有最後一個循環中的數據正在控制檯中顯示。爲什麼這是爲什麼不是所有的數據存儲在數組中?

+2

循環'cart'不是一個數組,這是你的情況 –

+1

'cart'對象是一個對象,每次迭代時你都覆蓋,所以它的結果是最後一個。 –

+0

@商業自殺怎麼回事?這是否意味着它不能存儲數據 – lorrainemutheu

回答

2

車是不是在你的情況下數組是一個對象,這將工作你的情況

var carts = []; 
for (i = 0; i < len; i++) { 
    var cart = {}; 
    cart.item_name = items[i].get("item_name"); 
    cart.quantity = items[i].get("quantity"); 
    cart.amount = items[i].get("amount"); 
    cart.total = cart.amount * cart.quantity; 
    cart.subtotal = cart.subtotal + cart.total; 
    carts.push(cart); 
} 
console.log(carts); 
1

首先要聲明cart是一個數組,你需要使用[],然後在每次迭代中替換對象內部的信息,所以只有最後一次迭代纔有效。你需要這樣做:

var cart = []; 
for (i = 0; i < len; i++) { 
    var temp = {}; 
    temp.item_name = items[i].get("item_name"); 
    temp.quantity = items[i].get("quantity"); 
    temp.amount = items[i].get("amount"); 
    temp.total = cart.amount * cart.quantity; 
    temp.subtotal = cart.subtotal + cart.total; 
    cart.push(temp); 
} 
console.log(cart); 
1

聲明一個數組並將個人購物車放在裏面。

let carts = []; 
for (let i = 0; i < len; i++) { 
    let cart = {}; 
    cart.item_name = items[i].get("item_name"); 
    cart.quantity = items[i].get("quantity"); 
    cart.amount = items[i].get("amount"); 
    cart.total = cart.amount * cart.quantity; 
    cart.subtotal = cart.subtotal + cart.total; 
    carts.push(cart); 
} 
console.log(carts); 
0

我想你想要一個對象數組,你只需要一個對象。

var cartItems = []; 
var cartItem; 

for (var i = 0; i < len; i++) { 
    cartItem = {}; 
    cartItem.item_name = items[i].get("item_name"); 
    cartItem.quantity = items[i].get("quantity"); 
    cartItem.amount = items[i].get("amount"); 
    cartItem.total = cartItem.amount * cartItem.quantity; 
    cartItem.subtotal = cartItem.subtotal + cartItem.total; 
    cartItems.push(cartItem); 
} 
console.log(cartItems); 
1

使用Array而非Object和此陣列與push()方法中添加的每個車Object

var carts = []; 
for (i = 0; i < len; i++) { 
    var cart = {}; 
    cart.item_name = items[i].get("item_name"); 
    cart.quantity = items[i].get("quantity"); 
    cart.amount = items[i].get("amount"); 
    cart.total = cart.amount * cart.quantity; 
    cart.subtotal = cart.subtotal + cart.total; 
    carts.push(cart); 
} 
0

你沒有申報車作爲數組。現在對於數組語法會是這樣

var cart = []; 

,然後申報對象在這樣

for (i = 0; i < len; i++) { 
    var cart = {}; 
    cart.item_name = items[i].get("item_name"); 
    cart.quantity = items[i].get("quantity"); 
    cart.amount = items[i].get("amount"); 
    cart.total = cart.amount * cart.quantity; 
    cart.subtotal = cart.subtotal + cart.total; 
    carts.push(cart); 
}