清理对象数组

时间:2015-08-26 11:17:38

标签: javascript arrays

我的实施是这样的:

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

我的测试var是一个对象数组。在这里,最后一个对象可以是空的或有键。

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

我现在所写的内容是有效的,因此:

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

有更好的方法吗?有什么更直接的吗?

1 个答案:

答案 0 :(得分:3)

  

有更好的方法吗?

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

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

  2. 您不需要变量

  3. 如果您未使用结果,则无需pop,只需递减length

  4. 所以:

    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;
        }
    }
    

    ...但是你可以看到它更详细,并且在上面它假设阵列上没有非索引属性(详细说明我的意思{{3} })。