我的实施是这样的:
var test = [{},{},{}];
我的测试var是一个对象数组。在这里,最后一个对象可以是空的或有键。
如果它是空的,我总是需要删除最后一个对象。
我现在所写的内容是有效的,因此:
var lengthofTest = test.length;
if(Object.keys(test[lengthofTest]).length == 0) {
test.pop();
}
有更好的方法吗?有什么更直接的吗?
答案 0 :(得分:3)
有更好的方法吗?
取决于您对"更好的定义。" :-)对我来说,除了几个细节之外,这是一个好方法:
您需要test[lengthofTest - 1]
,而不是test[lengthofTest]
。 (请记住,索引从0
开始,因此它0
到length - 1
。)
您不需要变量
如果您未使用结果,则无需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;
}
}
...但是你可以看到它更详细,并且在上面它假设阵列上没有非索引属性(详细说明我的意思{{3} })。