Javascript 如果';输入[类型=';隐藏';]:第一个';是未定义的

Javascript 如果';输入[类型=';隐藏';]:第一个';是未定义的,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,这段代码获取表中的所有数据行,但是,如果第一个隐藏输入不包含文本,我不想在数组中保存项 $('.save').on("click",function(){ var array = $.map($('table tr'), function (val, i) { var obj = {}, inputs = $(val).find('td input[type='hidden'],input[type='text'],select');

这段代码获取表中的所有数据行,但是,如果第一个隐藏输入不包含文本,我不想在数组中保存项

 $('.save').on("click",function(){    
        var array = $.map($('table tr'), function (val, i) {
                var obj = {}, inputs = $(val).find('td input[type='hidden'],input[type='text'],select');
                obj[inputs.filter('input[type='hidden']:first').val()]
               = $.map(inputs.not('input[type='hidden':first'), 
                function (val, i) {
                    return val.value;
                });
                return obj;
            });
            var data = JSON.stringify(array);
        });
这是我的数组的一个示例结果:

[{"add":["orange","1","Yes"]}[{"":["apple","2","Yes"]}]
注意第二项,它包含空的(不是“add”),我不希望它保存在我的数组中。非常感谢您的帮助

请参见此处

尝试以下操作:

var array = $.map($('table tr'), function (val, i) {
     var obj = {},
     inputs = $(val).find('td input[type=\'hidden\'],input[type=\'text\'],select');
     var inputVal = inputs.filter('input[type=\'hidden\']:first').val();
     if (inputVal.length) {
         obj[inputVal] = $.map(inputs.not('input[type=\'hidden\']:first'),
         function (val, i) {
             return val.value;
         });
     }
     return obj;
 }).filter(function (val) {
     return !$.isEmptyObject(val)
 });

如果你想排除空的
数组
,你必须在调用
映射
后运行
过滤器

你能提供一个提琴吗“不包含文本”与“未定义”是非常不同的标准,你想要哪个?@Mritunjay看到这个提琴siri的意思是不包含隐藏输入的文本sir你能检查这个提琴吗,先生,我无法提醒数组哇谢谢,先生,但是如果我添加空标志,值没有保存,但是数组项在那里,
[{“add”:[“orange”,“1.00”,“Yes”]},{}]
对,就像我在代码示例下面提到的,你必须运行一个
过滤器
:没问题,很乐意帮忙。