数组中的项只返回最后一个

时间:2014-02-24 14:16:01

标签: javascript arrays json

我使用此函数传递数组中的每个元素以在if语句中使用它问题是函数总是返回数组的最后一个值请帮助。

function getQtyCheck()
{
    var qty;
    var id;
    var checkQty = new Array()
     if(localStorage.getItem("checkout")!=null || localStorage.getItem("checkout")!=""){
       checkQty = JSON.parse(localStorage.getItem("checkout"));
       for(var t =0; checkQty.length >t; t++){
         id = checkQty[t]; 
         t++;
         qty = checkQty[t];

       }//end for loop
      return {ids:id,qtys:qty}
     }//end checkout

}

然后在脚本的另一部分我使用这些变量

var result = getQtyCheck();
    var id = result.ids;
    var qty = result.qtys;
    if(this.id == id){
var tqty = this.quantity-qty;

3 个答案:

答案 0 :(得分:2)

我想我正在关注你现在要做的事情。您想要将数组中的每个元素作为对象数组返回吗?

function getQtyCheck() {
    var qty,
        id,
        checkQty = [],
        returnValues = [];
     if(localStorage.getItem("checkout")!=null && localStorage.getItem("checkout")!=""){
         checkQty = JSON.parse(localStorage.getItem("checkout"));
         for(var t =0, len = checkQty.length; len > t; t++){
             id = checkQty[t]; 
             t++;
             qty = checkQty[t];
             returnValues.push({ id: id, qty: qty });
         }
         return returnValues;
     }

}

在循环中,构建要返回的对象的数组。循环之后,返回新创建的数组。

答案 1 :(得分:1)

每次循环迭代,您将idqty分配给当前迭代的项目。循环结束后,返回一个对象,并将最后一个迭代项设置为变量。由于您的return紧跟在循环之后并使用循环中设置的变量,因此您将始终获得最后的值。

答案 2 :(得分:1)

它每次都返回最后一个,因为你正在循环它,它正在添加它,但是你在循环之外使用return,这只会得到它运行的最后一个。

你不应该在for循环中return,因为它会尝试多次返回。你可以做的是push它到array,然后在最后得到它。