Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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 如何使代码在未传递条件后向下执行函数?_Javascript - Fatal编程技术网

Javascript 如何使代码在未传递条件后向下执行函数?

Javascript 如何使代码在未传递条件后向下执行函数?,javascript,Javascript,以下函数执行以下操作: 1) 检查对象是否具有非空类别(具有特定名称的键) 2) 检查这些类别中的每个对象。如果对象具有属性web,且属性不为空或未定义,则返回false 3) 最后一位执行相同的操作,但当属性web位于对象中而不在类别中时 hasNoCategories (object) { for (let key in object) { const value = object[key] const isCategory = this.categories.index

以下函数执行以下操作:

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
},
但是,当代码有时停在
//卡在这里
,并且永远不会在结尾返回
true

解决办法之一是:

if (pano.web !== undefined && pano.web !== '') {
  result = false
} else {
  result = true
}
但是我反对让两个
返回true
,我觉得这有点混乱逻辑(我只想让一个
返回true
,最后一个。)

如何修改代码,使代码不会卡在
//卡在此处
并一直持续到达到
返回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
循环而不是
map
来执行此操作的示例,该循环用于第一个
if
语句

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
}
hasnotegories(对象){
for(让输入对象){
常量值=对象[键]
const isCategory=this.categories.indexOf(key)>-1
if(value.constructor==Array&&isCategory&&value.length>0){
for(设i=0,len=value.length;i

不过,这可能是一种更干净的方式。我认为
for
循环往往会使代码看起来不那么干净。

这是使用
for
循环而不是
map
执行第一个
if
语句的示例

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
}
hasnotegories(对象){
for(让输入对象){
常量值=对象[键]
const isCategory=this.categories.indexOf(key)>-1
if(value.constructor==Array&&isCategory&&value.length>0){
for(设i=0,len=value.length;i

不过,这可能是一种更干净的方式。我认为
for
循环会使代码看起来不那么干净。

当到达返回时,函数停止。在第一个
if
语句中读取和,如果
result
没有变为
false
,则返回
undefined
,函数结束时与前面提到的@zer00ne类似。@DonovanM那么如何才能恢复,使函数在返回
undefined
时不结束?同样,当使用
let
时,您将
键的范围限制为
用于循环。如果希望使用
键返回true,请尝试
var
。阅读本文。我相信这就是您的变通方法之所以有效的原因,因为它在
键的范围内。当您到达返回值时,函数停止。在第一个
if
语句中读取和,如果
result
没有变为
false
,则返回
undefined
,函数结束时与前面提到的@zer00ne类似。@DonovanM那么如何才能恢复,使函数在返回
undefined
时不结束?同样,当使用
let
时,您将
键的范围限制为
用于循环。如果希望使用
键返回true,请尝试
var
。读这篇文章。我相信这就是你的变通方法之所以有效的原因,因为它在
key
的范围内。是的,我同意。我想不出一种不使用
for loop
s思想的方法是的,我同意。不过,我想不出一种不使用
for loop
s的方法