2017-08-06 41 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); 
}