更改时从Javascript数组中删除项

更改时从Javascript数组中删除项,javascript,Javascript,我有一点情况。基本上,我是在JavaScript数组中添加一个项,在选择框更改时填充该项。但问题是当我输入0时,它应该从数组中删除 这是密码 var addon = new Array(); function updateAddons(){ addon.length=0; var plan = new Array; var planQty = new Array; plan.length=0; planQty.length=0; for(va

我有一点情况。基本上,我是在JavaScript数组中添加一个项,在选择框更改时填充该项。但问题是当我输入0时,它应该从数组中删除

这是密码

var addon = new Array();
function updateAddons(){
    addon.length=0;

    var plan = new Array;
    var planQty = new Array;

    plan.length=0;
    planQty.length=0;

    for(var j =0 ; j< 3; j++){
        $("select[name='addon_"+j+"[]'] option:selected").each(function(){
            var item = {
                product_name : $(this).attr('pn'),
                product_cost : $(this).attr('cost'),
                product_id : $(this).val()
            };
            if(item.product_id != 0){
                plan.push(item);
            }
        });
        $("input[name='addonQty_"+j+"[]'] ").each(function(){
            if($(this).val() != 0){
                planQty.push($(this).val());
            }
        });
    }

    for(var i =0; i < plan.length; i++){
        var item = {
            product:plan[i],
            product_qty:planQty[i]
        }
        if(item.product.product_id != 0){
            addon.push(item);
        }

    }

}
var addon=new Array();
函数updateAddons(){
addon.length=0;
var计划=新数组;
var planQty=新数组;
计划长度=0;
计划数量长度=0;
对于(var j=0;j<3;j++){
$(“选择[name='addon][j+“[]”选项:选中”)。每个(函数(){
变量项={
产品名称:$(this.attr('pn'),
产品成本:$(本).attr(“成本”),
product_id:$(this.val())
};
如果(item.product_id!=0){
计划、推动(项目);
}
});
$(“输入[name='addonQty][uj+“[]”])。每个(函数(){
如果($(this).val()!=0){
planQty.push($(this.val());
}
});
}
对于(变量i=0;i
我已经创建了一个JSFIDLE来查看它。(检查浏览器控制台以获取完整的对象。)

如果有人能帮忙。请解释你的答案


我自己解决了。将二进制数替换为0,并且不在最终数组中添加


谢谢

您的代码的主要问题是以下陈述:

 if($(this).val() != 0)
问题是,如果输入为空,则值为未定义。在javascript中,未定义的
不等于
0
。解决此问题的一个简单方法是测试未定义的:

 if($(this).val() != 0 && $(this).val() != undefined)

谢谢你的回复。但现在我面临另一个问题,问题是在向数组中添加项时,如果产品id为0,则会破坏数组,无法在其旁边添加项。@MurtazaHussain我创建了一个更新的JSFIDLE,以显示如何使其工作(每次更新后记录到控制台),谢谢。但是现在从第二个下拉列表中选择任何项目,并在相应的文本框中输入3。现在你就知道我面临什么问题了。