考虑这个非常简单的代码:
someLabel:
for (var i=0; i<newFonts.length; i++) {
var newFont = newFonts[i];
for (var j=0; j<oldFonts.length; j++) {
var oldFont = oldFonts[j];
if (fb.equals(oldFont, newFont)) {
// Break out of inner loop, don't finish outer iteration, continue with next outer item
continue 2;
}
}
// This must only happen if `newFont` doesn't match ANY `oldFonts`
oldFonts.push(newFont);
}
它的作用是比较所有的“oldFonts”对象和“newFonts”对象,并且只有在“newFont”不存在于“oldFonts”中时才将其添加到“oldFonts”(使用“oldFonts.push”)中。
“oldFonts”和“newFonts”都是具有“name”和“host”属性的对象。两者都在“fb.equals()”中用于确定相等性。“indexOf()”无法工作。
这正是我在PHP中所做的。在JS中不起作用,因为JS不支持“continue 2”,这意味着继续2级。
我该如何在JS中实现这一点?
- “continue”行不通,因为它仍会完成内部循环并最终到达“push”。 - “break”不起作用,因为它将跳过内部循环并直接跳转到“push”。 - “break someLabel”不适用,因为我不想在必须忽略一个对象时跳过所有“newFonts”。
这必须能够在没有任何单个函数的情况下实现...
var i
。请使用另一个变量。 - GOTO 0