我需要迭代一个对象,但要知道我何时进行最后一次迭代。我怎样才能做到这一点?对象没有“长度”属性,所以我不能只计算迭代次数并将其与长度进行比较。我很想做类似的事情
var len = 0;
for ( key in obj ) {
len++;
}
var i = 0;
for ( key in obj ) {
i++;
var last_iter = (i == len);
...
}
有没有更好的办法?
我需要迭代一个对象,但要知道我何时进行最后一次迭代。我怎样才能做到这一点?对象没有“长度”属性,所以我不能只计算迭代次数并将其与长度进行比较。我很想做类似的事情
var len = 0;
for ( key in obj ) {
len++;
}
var i = 0;
for ( key in obj ) {
i++;
var last_iter = (i == len);
...
}
有没有更好的办法?
您可以使用以下方法找到键的数量:
var n = Object.keys(obj).length
在 ES5 之前的浏览器上,MDN 网站上提供了一个 shim 。
您的问题的可能解决方案是:
var keys = Object.keys(obj);
while (keys.length) {
var key = keys.shift();
var value = obj[key];
if (!keys.length) {
// this is the last key
}
}
如果您需要对最后一个键做某事,您可以简单地将其设置为变量并在循环后使用它。这将节省循环两次。
var key = '';
for (key in obj) {
//...
}
// Operation with last key...
// obj[key];
var prev_key = false;
for (key in obj) {
if(prev_key) {
<code here>
}
prev_key = key;
}
<code here for last key>
如果您可以获取对象的第一个键,则此代码会更好地工作,因此您可以避免 if,但是您不能在 javascript 中可靠地做到这一点(并且仍然在循环中以相同的顺序迭代)。