如何更新Array中的特定变量值?

时间:2016-12-27 07:35:17

标签: jquery

这是我到目前为止所尝试的。没有得到如何只更新数组中的变量值

allVals = [];
var qty;
jQuery(".big:checked").each(function() {
    qty = parseInt(jQuery(this).parents().nextAll().children().find('input[name="quantity"]').val());
    if (jQuery.inArray(jQuery(this).val(), allVals) == -1) {
        allVals.push(jQuery(this).val() + ',' + qty + ',' + 'custcol_name_of_attendees|' + nameatt + '||custcol_email_of_attendees|' + emattendee + '||custcol_event_name|' + eventname + '|    |custcol_event_location|' + eventlocation); //not present in array
    } else {
        qty = parseInt(jQuery(this).parents().nextAll().children().find('input[name="quantity"]').val()) + 1;
        // update only qty value in allVals array
    }
});

我希望每次在数组

中找到重复项时,将qty变量值增加+1

2 个答案:

答案 0 :(得分:0)

修改

好的,现在我想我明白了你想要什么。数量不是id的最佳名称。试试这个:

allVals = [];
jQuery(".big:checked").each(function() {
    var elements = jQuery(this).parents().nextAll().children().find('input[name="quantity"]');

    jQuery(elements).each(function() {
        var qty = parseInt(this.val());
        var id = this.attr('id');

        if (qty in allVals) {
           allVals[qty] += 1;
        } else {
            allVals[qty] = 1;
        }
    });

});

===

您的代码永远不会在数组中找到任何内容。你推进阵列的是什么

jQuery(this).val() + ',' + qty + ',' + 'custcol_name_of_attendees|' + nameatt + '||custcol_email_of_attendees|' + emattendee + '||custcol_event_name|' + eventname + '|    |custcol_event_location|' + eventlocation

但你只是在搜索这个

jQuery(this).val()

我认为更好的解决方案是为您的输入提供唯一ID,并使用id in allVals

检查

此外,数组值永远不会更新。只有qty会根据输入字段的值进行更新。

答案 1 :(得分:0)

首先,您可以找到indexOf的价值指数:

var index = allVals.indexOf(jQuery(this).val());

然后,您只能按=运算符更新值:

allVals[index] = qty // "qty" after update value