如何做到这一点,使代码在不传递条件后执行函数
How to do it so the code executes down the function after not passing a condition?
以下函数执行以下操作:
1) 检查对象是否具有非空类别(具有特定名称的键)。
2) 检查这些类别中的每个对象。如果对象具有属性web
,并且该属性不为空或未定义,则返回false
。
3) 最后一位执行相同的操作,但当属性web
在对象中而不在类别中时。
hasNoCategories (object) {
for (let key in object) {
const value = object[key]
const isCategory = this.categories.indexOf(key) > -1
if (value.constructor === Array && isCategory && value.length > 0) {
let result
value.map(pano => {
if (pano.web !== undefined && pano.web !== '') {
result = false
}
})
// STUCK HERE
return result
}
if (key === 'web' && value !== '') {
return false
}
}
return true
},
然而,当代码有时在// STUCK HERE
中停止,并且在结束时从不返回true
时。
一个解决方法是:
if (pano.web !== undefined && pano.web !== '') {
result = false
} else {
result = true
}
但我反对有两个return true
,我觉得这有点混乱逻辑(我只想有一个return true
,最后一个。)
如何修改代码,使代码不会卡在// STUCK HERE
中,并一直持续到到达return true
?
编辑:
样本输入:
{
"livingroom": [],
"diningroom": [],
"kitchen": [],
"bedroom": [],
"study": [],
"bathroom": [],
"toilet": [],
"garden": [],
"garage": [],
"outdoors": [],
"other": [],
"id": "ZI4hteKxgr",
"name": "Cuiti",
"description": "",
"visible": true,
"user": "",
"floorplan": "",
"shareCode": "http://vrviewer.istaging.co#!/854703",
"date": "2016/5/13",
"isDirty": false
}
这是使用for
循环而不是第一个if
语句的map
来执行此操作的示例。
hasNoCategories (object) {
for (let key in object) {
const value = object[key]
const isCategory = this.categories.indexOf(key) > -1
if (value.constructor === Array && isCategory && value.length > 0) {
for (let i = 0, len = value.length; i < len; i++) {
let pano = value[i]
if (pano.web !== undefined && pano.web !== '') {
return false
}
}
}
if (key === 'web' && value !== '') {
return false
}
}
return true
}
不过,这可能可以用一种更干净的方式来完成。我认为for
循环往往会使代码看起来不那么干净。
相关文章:
- 如何做到这一点,使代码在不传递条件后执行函数
- 在函数中添加多个条件
- 如何在页面加载时设置函数的条件
- AngularJS:如何使用java脚本函数更改跨度的ng-show条件
- 具有多个条件的Javascript.split()函数
- 有条件地运行javascript函数-Razor,HTML
- 如何使用图表包装函数有条件地格式化谷歌可视化表单元格
- Google Sheets自定义函数条件格式
- 多次调用promise函数,直到另一个promise函数满足条件
- 在条件内部调用JQuery函数
- 双条件jQuery函数事件
- 使用条件函数的Jquery ReplaceWith()的行为与我预期的不一样
- 将函数求值为节点中的条件函数
- 条件函数的无点样式
- 条件函数的结构
- 将条件函数参数('&')传递给自定义角度指令
- 谷歌电子表格的条件函数
- 通过执行条件函数提高速度
- 三& # 39;或# 39;javascript中的条件函数没有按预期运行
- 如何基于带有提交按钮的选定选项调用条件函数