首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何从数组中删除空对象?

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

Stack Overflow用户
提问于 2017-02-23 00:55:02
回答 2查看 72关注 0票数 0

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

这是数组

代码语言:javascript
运行
AI代码解释
复制
var gridData = {
    step3GridData: [{ Description: "", Color: "", SqSiding: "" }]
};

只需单击一个按钮,我就会将一个新对象推送到数组中

代码语言:javascript
运行
AI代码解释
复制
gridData.step3GridData.push({ Description: $("#InfoInsul").text(), Color: $("#ddGetInsulationMaterialColor").val(), SqSiding: $("#ddInsulationSquares").val() });

LoadStep3(gridData.step3GridData);

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-23 01:16:07

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

代码语言:javascript
运行
AI代码解释
复制
var gridData = {
    step3GridData: [] // empty array
};

然后,当你推送一个新对象时,检查输入是否像这样填充:

代码语言:javascript
运行
AI代码解释
复制
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来警告一条消息,指出用户留下了一些输入为空。

票数 0
EN

Stack Overflow用户

发布于 2017-02-23 00:58:27

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

代码语言:javascript
运行
AI代码解释
复制
if (gridData.length && Object.keys(gridData[0]).length === 0) {
  gridData.splice(0, 1);
}

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

代码语言:javascript
运行
AI代码解释
复制
for (const [idx, obj] of gridData.entries()) {
    if (Object.keys(obj).length) === 0) {
        gridData.splice(idx, 1);
        break;
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42405148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档