Javascript 对象的干净数组
我的实施情况如下:Javascript 对象的干净数组,javascript,arrays,Javascript,Arrays,我的实施情况如下: var test = [{},{},{}]; 我的测试变量是一个对象数组。在这种情况下,最后一个对象可以是空的,也可以有键 如果最后一个对象为空,我需要始终删除它 我现在写的东西很有效,因此: var lengthofTest = test.length; if(Object.keys(test[lengthofTest]).length == 0) { test.pop(); } 有更好的方法吗?还有更直接的吗 有更好的方法吗 取决于你对“更好”的定义:-)对我来说
var test = [{},{},{}];
我的测试变量是一个对象数组。在这种情况下,最后一个对象可以是空的,也可以有键
如果最后一个对象为空,我需要始终删除它
我现在写的东西很有效,因此:
var lengthofTest = test.length;
if(Object.keys(test[lengthofTest]).length == 0) {
test.pop();
}
有更好的方法吗?还有更直接的吗
有更好的方法吗
取决于你对“更好”的定义:-)对我来说,这是一个好方法,除了几个细节:
测试[lengthofTest-1]
,而不是测试[lengthofTest]
。(请记住,索引从0
开始,所以它是0
到length-1
)pop
,只需减小length
:
var lengthofTest = test.length;
for (var key in test[lengthofTest-1]) {
if (test[lengthofTest-1].hasOwnProperty(key)) {
--test.length;
break;
}
}
…但正如您所看到的,它要详细得多,在上面,它假设数组上没有非索引属性(关于我的意思的详细信息)。是的!!!只是运行它来意识到我错过了最长的1。是的,第二种方法非常冗长谢谢大家!@普密辛哈尔:我在上面加了几个小注释。你好,那是纽约。。我喜欢第三点。虽然我必须保留var,因为我的实际对象处于对象继承权的深处。。所以最好是为长度设置一个var
var lengthofTest = test.length;
for (var key in test[lengthofTest-1]) {
if (test[lengthofTest-1].hasOwnProperty(key)) {
--test.length;
break;
}
}