foreachコントロールドアは役に立たないが、私だけが知らないのか、私は少し恥ずかしい.
9109 ワード
那叫我的傻瓜...ドアをコントロールするのがforeachに役に立たないのは私だけだ...あざ笑う...别の言叶で言ってるみたいじゃないですか.とりあえずJavaScriptを勉強しましょう^^
undefinedエラーのcand read propertiesが一時停止しました.
だから私は次のようにインデックスを引きました.
removeの後にforeachが回った...あはは…!(⊙o⊙)
これはforEachメソッドでコールバック関数が渡されたからです!
returnと書いても、最終的にはループに影響を与えることなくコールバック関数から返されます...
MDNでforEachについての説明でもそう言います!
ソース https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
配列全体を巡回する必要がない場合はforeachを使用しないでください.
foreachとforを同じ私だと思っています...さあ、今は違いを知って、正しく使います!
イニシャルコード
removeWake(name) {
let layerArr = this.olMap.getLayers().getArray();
this.olMap.getLayers().forEach(layer)=>{
if(layer.get("name") === name){
this.olMap.removeLayer(layer);
return;
}
}
},
mapレイヤでnameという名前の子供がいたら「消去して戻る」と書きましたが、いつもforeachでundefinedエラーのcand read propertiesが一時停止しました.
だから私は次のようにインデックスを引きました.
removeの後にforeachが回った...あはは…!(⊙o⊙)
removeWake(name) {
let layerArr = this.olMap.getLayers().getArray();
this.olMap.getLayers().forEach(layer, index)=>{
console.log(index);
if(layer.get("name") === name){
this.olMap.removeLayer(layer);
return;
}
}
},
検索するとforeachのreturn、break、continueのような制御文はまったく役に立たないことがわかりました~~!これはforEachメソッドでコールバック関数が渡されたからです!
returnと書いても、最終的にはループに影響を与えることなくコールバック関数から返されます...
MDNでforEachについての説明でもそう言います!
예외를 발생시키는 경우를 제외하고는 forEach를 중단시킬 방법을 없으며, 그러한 목적이라면 forEach를 사용하는 것은 잘못된 방법이다.
代わりに簡単なfor loopやeach、sometなど他の方法を使って…!ソース
変更されたコード
removeWake(name) {
let layerArr = this.olMap.getLayers().getArray();
let layerNum = layerArr.length;
for (let idx = 0; idx < layerNum; idx++) {
if (layerArr[idx].get("name") === name) {
this.olMap.removeLayer(layerArr[idx]);
return;
}
}
},
▼結論は!
配列全体を巡回する必要がない場合はforeachを使用しないでください.
foreachとforを同じ私だと思っています...さあ、今は違いを知って、正しく使います!
Reference
この問題について(foreachコントロールドアは役に立たないが、私だけが知らないのか、私は少し恥ずかしい.), 我々は、より多くの情報をここで見つけました https://velog.io/@pdg03092/forEach-제어문-안먹히는거-나만-몰랐나-자괴감들어テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol