Javascript对象结构

Javascript object structure

本文关键字:结构 对象 Javascript      更新时间:2023-09-26

我有一个收集员工生产数据的表单,代码如下:

$(document).on('click','input#Apply.btn.btn-success',function(e){
    var TableData;
    TableData = storeTblValues();  
    var TableData1 = [];
    $.each(TableData,function(index,value){
        if(value.quantity && value.quantity >0 && value.quantity < 65535){    
            TableData1[index]={
               "employee_id" : value.employee_id
            ,  "operation_id" : value.operation_id
            ,  "quantity" : value.quantity       
            }
        }   
            }); 
    // retrieving employee_id to fetch date data from date input          
    $.each(TableData1,function(index,value){         
         employee_idj = value.employee_id;
        }); 
    $('#cboxClose').click(); 
    var datee = dateConvToMySqlDate($('input#dateOfProduction_'+employee_idj+'.dateOfProduction_.hasDatepicker').val());
    if(!datee){alert(dateMessager);e.preventPropagation();return false;}
    var noOfRecords = TableData1.length;
    for(i=0;i<noOfRecords;i++)
    {TableData1[i]['production_date'] = datee;}
    var TableData1 = $.toJSON(TableData1); 
    alert(JSON.stringify(TableData1));
    var qurl = '<?php echo base_url();?>production_entry/submitData';
    $.ajax({
    url: qurl,
    type: "POST",    
    data:"pTableData=" + TableData1,           
    success: function(data){
            var data = $.parseJSON(data);
            if(data.status == 'error')
            {
            alert(data.errorMessage);   
            }else{ 
            alert(noOfRecords+' records sent and '+' '+data.successMessage);
              $('#tr_'+employee_idj).fadeOut();
            }
          }
    });
    function storeTblValues()
    {    
        var TableData = new Array();
        $('#searchOperationTable tr').each(function(row, tr){
         var x = parseInt($(tr).find("input.quantity").val());   
            if(x){
            TableData[row]={
               "employee_id" : parseInt($(tr).find("input.hiddenemployeeId").val())
            ,  "operation_id" : parseInt($(tr).find('td:eq(0)').text())
            ,  "quantity" : parseInt($(tr).find("input.quantity").val())       
            }
        }
            }); 
            TableData.shift();
            return TableData;
    }
});

当某人错误地输入等于0的数量值时,那么TableData1对象变成

[ null,{"employee_id" : 3816,"operation_id":3,"quantity":10}]

,脚本停止工作。我想消去这个零。该怎么办?

当输入0时,您的检查if(x)为false,因此不会为该条目设置TableData[row]。相反,使用array.push:

设置TableData
     if(x){
        TableData.push({
           "employee_id" : parseInt($(tr).find("input.hiddenemployeeId").val())
        ,  "operation_id" : parseInt($(tr).find('td:eq(0)').text())
        ,  "quantity" : parseInt($(tr).find("input.quantity").val())       
        })
     }

如果您不关心数组的索引值,那么您可以使用push(value)而不是array[index]=value。就像我的例子:

TableData.push({
    "employee_id" : parseInt($(tr).find("input.hiddenemployeeId").val()),
    "operation_id" : parseInt($(tr).find('td:eq(0)').text()),
    "quantity" : parseInt($(tr).find("input.quantity").val())       
});`