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)
你可以这样做:
\n\nvar 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}\nRun Code Online (Sandbox Code Playgroud)\n\n这是为了防止您想要以一种方式 ( doSomething) 处理除最后一个元素之外的所有元素,并以另一种方式 ( ) 处理最后一个元素doSomethingElse。
如果您想以一种方式处理所有元素 ( doSomething) 并且只想对最后一个元素进行额外处理 ( doSomethingExtra),您可以执行以下操作:
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}\nRun Code Online (Sandbox Code Playgroud)\n\n为了使其更短,您可以通过重用变量来执行类似于 T\xc3\xb6r\xc3\xb6k G\xc3\xa1bor 在他提供的要点el中所做的操作,即:
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}\nRun Code Online (Sandbox Code Playgroud)\n\n希望这可以帮助。
\n| 归档时间: |
|
| 查看次数: |
10043 次 |
| 最近记录: |