清理对象数组

Clean array of objects

本文关键字:数组 对象      更新时间:2023-09-26

我的实现如下:

var test = [{},{},{}];

我的测试变量是一个对象数组。最后一个对象可以为空,也可以有键。

我需要删除最后一个对象,如果它总是空的。

我现在写的是这样的:

var lengthofTest = test.length;
if(Object.keys(test[lengthofTest]).length == 0) {
 test.pop();
 }

有更好的方法吗?还有更直接的吗?

有更好的方法吗?

取决于你对"更好"的定义。:-)对我来说,这是一个好方法,除了几个细节:

  1. 您需要test[lengthofTest - 1],而不是test[lengthofTest]。(记住,索引从0开始,所以从0length - 1。)

  2. 你不需要变量

  3. 如果您不使用结果,则不需要pop,只需减少length

:

if (Object.keys(test[test.length - 1]).length == 0) {
  --test.length;
}

还有更直接的吗?

你可以使用for-in:

var lengthofTest = test.length;
for (var key in test[lengthofTest-1]) {
    if (test[lengthofTest-1].hasOwnProperty(key)) {
        --test.length;
        break;
    }
}

…但正如你所看到的,它要冗长得多,在上面的例子中,它假设数组上没有非索引属性(我的意思是在另一个答案中详细说明)。