在JavaScript中检查对象是否存在后如何跳过循环
我有以下脚本:在JavaScript中检查对象是否存在后如何跳过循环,javascript,html,Javascript,Html,我有以下脚本: var done = {'foo':1}; var mylist = ['foo','bar','qux']; mylist.forEach(function(val) { // This if condition doesn't work if (val in done) { continue;} console.log(val) }); 它所做的是循环查看mylist并检查done中是否存在任何成员,如果存在,则跳过打印 但我的代码给出了以下错误消息: Unc
var done = {'foo':1};
var mylist = ['foo','bar','qux'];
mylist.forEach(function(val) {
// This if condition doesn't work
if (val in done) { continue;}
console.log(val)
});
它所做的是循环查看mylist
并检查done
中是否存在任何成员,如果存在,则跳过打印
但我的代码给出了以下错误消息:
Uncaught SyntaxError: Illegal continue statement(…)
预期结果如下:
bar
qux
正确的方法是什么?
继续
将无法在forEach
中工作,如您所见。
您可以使用return
而不是continue
可以使用检查对象是否具有属性
var done={
“foo”:1
};
var mylist=['foo','bar','qux'];
mylist.forEach(函数(val){
//如果条件不起作用,则此选项无效
如果(!done.hasOwnProperty(val)){
控制台日志(val);
document.write(val+'
');
}
});代码>您可以使用数组,如果您希望以更可读的方式执行此操作:
var done = {'foo':1};
var mylist = ['foo','bar','qux'];
// Utility function
var has = function(obj, prop) {
return Object.keys(obj).indexOf(prop) !== -1;
};
// Get missing values
var missingValues = mylist.filter(function(val) {
return !(has(done, val));
});
// Print each of them
missingValues.forEach(function(val) {
console.log(val);
});
只需在以下条件下反转逻辑即可:
var done={foo:1},
mylist=['foo','bar','qux'];
mylist.forEach(函数(val){
如果(!(val输入完成)){
document.write(val+'
');
}
});代码>可能重复的