Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 继续深入JS的2个级别_Javascript_Loops_Continue - Fatal编程技术网

Javascript 继续深入JS的2个级别

Javascript 继续深入JS的2个级别,javascript,loops,continue,Javascript,Loops,Continue,考虑以下非常简单的代码: 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

考虑以下非常简单的代码:

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);
}
someLabel:

对于(var i=0;i也许类似的东西可以帮助解决您的问题:

var oldfonts = ['courier new', 'comic sans', 'century gothic'];
var newfonts = ['times new roman', 'comic sans', 'wingdings'];
var addfonts = [];
for (var i = 0; i < newfonts.length; i++) {
    if (oldfonts.indexOf(newfonts[i]) < 0) { // if newfonts item doesnt exist in oldfonts array
        addfonts.push(newfonts[i]); // add it to addfonts array to be added to oldfonts array systematically after all different font items are found           
    }
}
for(var i = 0; i < addfonts.length; i++) {
    oldfonts.push(addfonts[i]); // push add fonts to oldfonts array
    console.log(oldfonts);
}
var oldfonts=['courier new','comic sans','century gothic'];
var newfonts=['times new roman','comic sans','wingdings'];
var addfonts=[];
对于(var i=0;i
注释演示了如何继续标记语句。但对于您原来的问题,您可能可以更轻松地解决它:

var difference = function(x, y) {
    return x.filter(function(e) {return y.indexOf(e) < 0;});
};

// or oldFonts = ... if you prefer to mutate
var combinedFonts = oldFonts.concat(difference(newFonts, oldFonts));
您可以看到这个


我迫不及待地想让胖箭广泛使用。以下是等效的:

var complement = (pred, a, b) => a.filter(x => !b.some(y => pred(x, y)));
var sameName = (a, b) => a.name === b.name;

continue someLabel
?@dfsq这是一个问题还是一个答案?您正在内部循环中重新定义
var i
。使用另一个变量。@GOTO0非常好的观点。更新了问题。
oldFonts
newFonts
不是
Array
,它们是
Array
,而
Font.name
是字体,所以
indexOf()
不起作用。我现在知道这一点并不明显。更新了问题。
旧字体
新字体
不是
数组
,它们是
数组
,字体是
Font.name
,所以
indexOf()
不起作用。我现在知道这一点并不明显。更新了问题。更新了答案以处理更复杂的匹配机制。
var complement = (pred, a, b) => a.filter(x => !b.some(y => pred(x, y)));
var sameName = (a, b) => a.name === b.name;