如何在JavaScript中检查对象是否存在后跳过循环
How to skip a loop after checking existence in an object in JavaScript
我有以下脚本:
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
正确的做法是什么?
continue
将无法在forEach
中工作,正如您在这里看到的"continue"在cursor.forEach()。你可以用return
代替continue
。
您可以使用hasOwnProperty
来检查对象是否有属性。
var done = {
'foo': 1
};
var mylist = ['foo', 'bar', 'qux'];
mylist.forEach(function(val) {
// This if condition doesn't work
if (!done.hasOwnProperty(val)) {
console.log(val);
document.write(val + '<br />');
}
});
将条件中的逻辑颠倒:
var done = { foo: 1 },
mylist = ['foo', 'bar', 'qux'];
mylist.forEach(function (val) {
if (!(val in done)) {
document.write(val + '<br>');
}
});
或者使用return
跳过函数流
var done = { foo: 1 },
mylist = ['foo', 'bar', 'qux'];
mylist.forEach(function (val) {
if (val in done) {
return;
}
document.write(val + '<br>');
});
你可以使用Array的filter
和Object.keys
,如果你希望这样做在一个更可读的方式:
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);
});
JSBin
相关文章:
- 在'用于'如果javascript中不存在对象属性,则循环
- 等到元素存在,循环,然后存储在变量中
- 基于不存在的元素中断循环
- 如何循环浏览每个图像并在casperjs脚本中检查其是否存在错误
- 尽管存在条件,jQuery for循环只运行一次
- 是否存在“;“超级突破”;使用Javascript或PHP进行循环
- Chrome浏览器事件循环与节点事件循环之间是否存在显著差异
- 是否存在循环“;重新开始”;
- 每个循环查找if函数是否存在
- 如何循环遍历一个对象并测试它是否为唯一存在的键
- 循环遍历数组中的url并检查是否存在类
- 如何在JavaScript中检查对象是否存在后跳过循环
- 当遇到不存在的图像时,For循环中断
- MySQL和PHP:循环遍历表,查找存在的值,如果不存在则更新,插入新值
- 循环对象来检查特定属性是否存在,有没有更好的方法,比如使用下划线
- 如何在Node/Express中循环对象数组,并检查MongoDB数据库中是否存在匹配
- 我的代码中是否存在无限循环
- 使用PHP循环生成JavaScript代码时,$().click()存在问题
- 为什么我的 JavaScript 代码中存在潜在的无限循环
- if循环获取数据(如果表中存在)如果不存在,则在表中插入值并使用javascript获取写入配置文件id的数据