识别Javascript对象中的最后一次迭代

Oma*_*bid 13 javascript loops object

我有一个我正在迭代的对象

for (el in object) {
// Some work here
}
Run Code Online (Sandbox Code Playgroud)

我想知道迭代内部的最后一次迭代是什么时候,所以我可以这样做

for (el in object) {
// Some work here
if (last_iteration) {
// Do something
}
}
Run Code Online (Sandbox Code Playgroud)

有任何简单的方法吗?

Mar*_*cel 12

我知道我迟到但我刚刚遇到这个并修复它:

var i = 0;
var object = {a: 1, b: 2};
var length = Object.keys(object).length;

for(el in object){
    i++;
    var last = i === length; // true if last, false if not last
}
Run Code Online (Sandbox Code Playgroud)


icy*_*com 4

你可以这样做:

\n\n
var first = true;\nvar prev;\n\nfor (var el in object) {\n  // Some work here\n  if (first) {\n    first = false;\n  } else {\n    doSomething(prev, object[prev]);\n  }\n  prev = el;\n}\n\nif (prev !== undefined) { // There was at least one element\n  doSomethingElse(prev, object[prev]); // Prev is now last of all elements\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是为了防止您想要以一种方式 ( doSomething) 处理除最后一个元素之外的所有元素,并以另一种方式 ( ) 处理最后一个元素doSomethingElse

\n\n

如果您想以一种方式处理所有元素 ( doSomething) 并且只想对最后一个元素进行额外处理 ( doSomethingExtra),您可以执行以下操作:

\n\n
var prev;\n\nfor (var el in object) {\n  // Some work here\n  doSomething(el, object[el]);\n  prev = el;\n}\n\nif (prev !== undefined) { // There was at least one element\n  doSomethingExtra(prev, object[prev]); // Prev is now last of all elements\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

为了使其更短,您可以通过重用变量来执行类似于 T\xc3\xb6r\xc3\xb6k G\xc3\xa1bor 在他提供的要点el中所做的操作,即:

\n\n
var el;\n\nfor (el in object) {\n  // Some work here\n  doSomething(el, object[el]);\n}\n\nif (el !== undefined) { // There was at least one element\n  doSomethingExtra(el, object[el]); // El is now last of all elements\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

希望这可以帮助。

\n