我有一个if语句在for in
循环内工作正常,但是当我在末尾添加else
语句时,代码会中断 - 就像在来自for..in
循环的变量(在此例中为键)不会传递给else
语句。下面的代码:JavaScript:其他语句在for..in循环中打破我的if语句
config = {'test1':2, 'test2':2, 'test3':5, 'test4':8}
for (key in config) {
if (isNaN(item)) {
return item;
}
if (key.indexOf(baseCcy) !== -1) {
console.log("match config");
item = parseFloat(item).toFixed(config[key]);
return item;
} else {
item = parseFloat(item).toFixed(10);
return item;
}
}
baseCcy和项目从角的输入,从下面的代码:| {{fill.price | decimalFilter:baseCcy}}
这样做的关键是创建一个自定义过滤器和我做的过滤器内部for..in循环实现它。到目前为止,它运行良好,但其他语句只是打破了它。 else语句的要点是,如果item
的输入都不匹配config数组,则返回10位小数的项。当我console.log key
for..in循环后,它只显示我“test1”,但当我删除else语句(只有两个if)时,console.log键显示我“ test1“,”test2“,”test3“,”test4“。 '
如果和其他人都有一个返回语句,所以你的for循环将永远停止后的第一个项目。我*想*你想要的是将else的主体移到循环后面,这样只有在循环结束时没有任何项匹配if条件时才会发生。 – nnnnnn
现在你有什么建议使用for循环?你想最后返回所有的项目还是返回第一个循环本身? –
@Reddy for循环的目的是获得数组config('test1','test2')的所有属性名称。然后运行if语句以将输入(item)与来自for..in(key)的变量相匹配。首先,如果返回给我的是默认状态下的项目,如果它是NaN,则返回if语句(如果是核心部分),则else语句是如果输入不匹配,返回默认值+ 10个小数。 – Mjaaay