我有我喜欢的HTML
<input type="text" class="form-control PaperSupply">`
<input type="text" class="form-control PaperSupply">`
<input type="text" class="form-control PaperConsum">
<input type="text" class="form-control PC">
相同价值论文供应和PaperConsum的多个输入, 在javascript我正在使用像这样的地图函数创建一个相同值的数组
var paperSupply = $('.PaperSupply').map(function(){return $(this).val();}).get();
var PaperConsum= $('.PaperConsum').map(function(){return $(this).val();}).get();
现在在json我希望如果这些数组的任何元素为null,则从数组中删除该元素。
例如:
{"paperSupply":["","2","3","","5"],"paperConsum":["1","","4","5","6"]}
如果这是来自上面代码的json, 那么我想要像这样的json,
{"paperSupply":["2","3","5"],"paperConsum":["","4","6"]}
如果paperSupply的任何索引为null,则它应该为null,那么第二个数组的索引也应该被删除。
这是演示小提琴DEMO
答案 0 :(得分:2)
您可以从.map()返回undefined以忽略空值。
在回调函数中,这指的是当前的DOM元素 对于每次迭代。该函数可以返回单个数据项或 要插入到结果集中的数据项数组。如果 返回数组,数组内的元素插入到 组。 如果函数返回null或undefined,则不会有任何元素 插入强>
var paperSupply = $('.PaperSupply').map(function () {
return $(this).val().trim() || undefined; //use trim only if you want to discard inputs with space only
}).get();
演示:Fiddle
更新
var PaperConsum = [],
$PaperConsums = $('.PaperConsum');
var paperSupply = $('.PaperSupply').map(function (i, el) {
var value = $(this).val().trim(); //use trim only if you want to discard inputs with space only
if (value) {
PaperConsum.push($PaperConsums.eq(i).val() || '');
return value;
}
}).get();
console.log(paperSupply, PaperConsum)
演示:Fiddle
答案 1 :(得分:0)
您可以添加过滤器:
$('.PaperSupply').map(function(){
return $(this).val().trim();
}).get().filter(Boolean);