以下の関数は、以下を行います。どのようにしてコードを実行すると、条件を渡しても関数を実行できないのですか?
1)オブジェクトに空でないカテゴリ(特定の名前のキー)があるかどうかを確認します。
2)これらのカテゴリ内の各オブジェクトを確認します。オブジェクトがweb
のプロパティを持ち、プロパティが空でも定義されていない場合は、false
を返します。
3)最後のビットは同じですが、プロパティweb
がカテゴリに含まれていないオブジェクト内にある場合。コードは時々// STUCK HERE
で停止し、決してとき
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
}
しかし私混乱の2 return true
を持つ反対だ、私はそれを感じる種類のロジック(私はちょうど1 return true
、端に1つを持っていると思います。)
コードを変更してコードが// STUCK HERE
に滞っていないようにして、return true
に達するまで続けますか?
EDIT:
サンプル入力:
{
"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
}
リターンになると、この機能は停止します。 [こちら](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return#Description)と[this](https://developer.mozilla.org/en- – zer00ne
最初の 'if'文で、' result'が 'false'にならなければ' undefined'を返し、関数は@ zer00neのように終わります。と述べた。 – DonovanM
@DonovanMどうすれば関数が再開し、 'undefined'を返すときに終了しないのですか? – alex