创建具有增加值的数组

时间:2017-12-17 15:00:02

标签: javascript arrays

我在页面上有一些id为id的元素,最后有行数。例如

<input type="hidden" name="productid1" id="productid1" value="4941">
<input type="hidden" name="qty1" id="qty1" value="2">
<input type="hidden" name="productid2" id="productid2" value="4942">
<input type="hidden" name="qty2" id="qty2" value="1">
<input type="hidden" name="productid3" id="productid3" value="4941">
<input type="hidden" name="qty3" id="qty3" value="5">

我知道元素数量,并且我需要使用productidX值生成带有键的js数组,以及值qtyX的值和

我尝试过那样的

var out = [];
var tot = jQuery('#totitems').val();

    for(var i = 1; i <= tot; i++)
    {
        out[jQuery('#productid'+i).val()] += parseFloat(jQuery('#devQty'+i).val())
    }

但这不起作用(

我需要像taht

一样
[4931] => 7
[4942] => 1

有人能说出正确的方法吗?

抱歉错误,英语不是我的母语

1 个答案:

答案 0 :(得分:0)

尝试使用此示例中的对象{}

var out = {}; //change to a object 
var tot = jQuery('#totitems').val();

for(var i = 1; i <= tot; i++)
{
    //now you can acess like properties/hashmap
    out[jQuery('#productid'+i).val()] += parseFloat(jQuery('#devQty'+i).val());
}

在使用+=之前,您还需要验证是否未定义:

var out = {}; //change to a object 
var tot = jQuery('#totitems').val();

for(var i = 1; i <= tot; i++)
{
    //now you can acess like properties/hashmap
   if(out[jQuery('#productid'+i).val()])
       out[jQuery('#productid'+i).val()] += parseFloat(jQuery('#devQty'+i).val());
   else
       out[jQuery('#productid'+i).val()] = parseFloat(jQuery('#devQty'+i).val());
}

使用#devQty代替#qty也有一点错误,您需要解析tot var:

&#13;
&#13;
var out = {}; //change to a object 
var tot = parseInt(jQuery('#totitems').val());

for(var i = 1; i <= tot; i++)
{
   if(out[jQuery('#productid'+i).val()])
       out[jQuery('#productid'+i).val()] += parseFloat(jQuery('#qty'+i).val());
   else
       out[jQuery('#productid'+i).val()] = parseFloat(jQuery('#qty'+i).val());
}

console.log(out);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!--For testing-->
<input type="hidden" name="totitems" id="totitems" value="3">


<input type="hidden" name="productid1" id="productid1" value="4941">
<input type="hidden" name="qty1" id="qty1" value="2">
<input type="hidden" name="productid2" id="productid2" value="4942">
<input type="hidden" name="qty2" id="qty2" value="1">
<input type="hidden" name="productid3" id="productid3" value="4941">
<input type="hidden" name="qty3" id="qty3" value="5">
&#13;
&#13;
&#13;

这是另一种方法:

&#13;
&#13;
var out = {}; 

jQuery("[name='product']").each(function(){

   var value = parseFloat(jQuery(this).val());
   var productID = jQuery(this).data("id");
   if(out[productID])
       out[productID] += value;
   else
       out[productID] = value;
});

console.log(out);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="hidden" name="product" data-id="4941" value="2">
<input type="hidden" name="product" data-id="4942" value="1">
<input type="hidden" name="product" data-id="4941" value="5">
&#13;
&#13;
&#13;