Рассмотрим очень простой код:Продолжить 2 уровней глубоко в JS
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.push
) если он еще не существует (fb.equals
).
oldFonts
и newFonts
являются объектами с name
и host
свойствами. Оба они используются в fb.equals()
для определения равенства. indexOf()
не будет работать.
Именно так я и делал это на PHP. Он не работает в JS, потому что JS не поддерживает continue 2
, что означает продолжение 2 уровней.
Как это сделать в JS ??
continue
не сделает, потому что он все равно закончить внутреннюю петлю и в конечном итоге наpush
break
не будет делать, потому что он будет пропускать внутренний цикл и перейти прямо кpush
break someLabel
не будет делать, потому что я не хочу, чтобы пропустить всеnewFonts
когда ONE должны быть проигнорированы
Это должно быть возможно без одной функции ...
'continue someLabel'? – dfsq
@dfsq Это вопрос или ответ? – Rudie
Вы переопределяете 'var i' во внутреннем цикле. Используйте другую переменную. –