如何从数组中删除空对象?

时间:2017-02-23 00:55:02

标签: javascript arrays javascript-objects

我有一个JavaScript数组对象,按一下按钮就可以将对象推入数组,然后将其用作网格的数据源。我面临的问题是,最初数组中的第一个对象都是空白值,当我加载网格时,由于空对象,我有一个空行...如何在加载之前从数组中删除该空对象网格?

这是数组

var gridData = {
    step3GridData: [{ Description: "", Color: "", SqSiding: "" }]
};

并在按钮上单击我将新对象推送到数组

gridData.step3GridData.push({ Description: $("#InfoInsul").text(), Color: $("#ddGetInsulationMaterialColor").val(), SqSiding: $("#ddInsulationSquares").val() });

LoadStep3(gridData.step3GridData);

如上所述,我需要在将负载与数组绑定之前删除该空对象。我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

使用splice。如果您确定它始终是数组中的第一项,您可以执行以下操作:

if (gridData.length && Object.keys(gridData[0]).length === 0) {
  gridData.splice(0, 1);
}

如果您不确定其位置,可以遍历数组并删除第一个空对象:

for (const [idx, obj] of gridData.entries()) {
    if (Object.keys(obj).length) === 0) {
        gridData.splice(idx, 1);
        break;
    }
}

答案 1 :(得分:0)

首先,像这样初始化你的数组:

var gridData = {
    step3GridData: [] // empty array
};

然后,在推送新对象时,检查输入是否填充如下:

var desc = $("#InfoInsul").text();             // this seems unnecessary as this is not left to the user to fill (if I'm assuming right then don't check if this is empty)
var col = $("#ddGetInsulationMaterialColor").val();
var sqs = $("#ddInsulationSquares").val();
if(desc.length && col.length && sqs.length) { // if desc is not empty and col is not empty and sqs not empty then add an object
    gridData.step3GridData.push({ Description: desc, Color: col, SqSiding:  });
}

现在,如果用户将某些内容留空,则不会推送该对象,因此不会有空对象。您可以使用else来提醒消息,说明用户将某些输入留空了。