使用for循环javascript将数据存储在数组中

时间:2017-08-06 16:36:23

标签: javascript arrays for-loop

我有以下代码:

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中环。但是,只有最后一个循环中的数据才会显示在控制台中。为什么这和为什么不是存储在数组中的所有数据?

6 个答案:

答案 0 :(得分: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 :(得分:1)

首先将cart声明为数组,需要使用[],然后在每次迭代中替换对象内部的信息,因此只有最后一次迭代才有效。你需要做这样的事情:

$query = $this->getManager()->createNativeQuery('SELECT .... ')

答案 2 :(得分:1)

声明一个数组并将个人车放入其中。

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);

答案 3 :(得分:1)

使用Array而不是Object,并使用Object方法在此数组中添加每个购物车push()

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);
}

答案 4 :(得分: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);

答案 5 :(得分: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);
}