Ответ 1
Вы можете сделать что-то вроде этого:
var first = true;
var prev;
for (var el in object) {
// Some work here
if (first) {
first = false;
} else {
doSomething(prev, object[prev]);
}
prev = el;
}
if (prev !== undefined) { // There was at least one element
doSomethingElse(prev, object[prev]); // Prev is now last of all elements
}
Это в том случае, если вы хотите обработать все, кроме последнего, одним способом (doSomething
) и обработать последний элемент по-другому (doSomethingElse
).
Если вы хотите обработать все элементы одним способом (doSomething
) и хотите иметь дополнительную обработку только для последнего элемента (doSomethingExtra
), вы можете сделать:
var prev;
for (var el in object) {
// Some work here
doSomething(el, object[el]);
prev = el;
}
if (prev !== undefined) { // There was at least one element
doSomethingExtra(prev, object[prev]); // Prev is now last of all elements
}
Чтобы сделать это еще короче, вы можете сделать то же, что и Тёрок Габор в gist, который он предоставил, путем повторного использования переменной el
, т.е.:
var el;
for (el in object) {
// Some work here
doSomething(el, object[el]);
}
if (el !== undefined) { // There was at least one element
doSomethingExtra(el, object[el]); // El is now last of all elements
}
Надеюсь, что это поможет.