今私はgetObjects()
方法があるソースを見てFabricJS(すでにダウン票のスパムを待っている)を使用していません。これは、forEachObject()
のようなカスタムイテレータの代わりにオブジェクトの配列を返します。
したがって、forEach()
、some()
、every()
などのような通常の配列のすべての反復メソッドを使用することができます。これは、あなたが望むことを可能にします。
私は、オブジェクトがイメージで、その背景のプロパティが真であるかどうかをチェックし、最初のオカレンスでループを中断したいのですか?これはそれを行う必要があります。
canvas
.getObjects()
.some(obj => {
if (obj.isType('image') && obj.hasOwnProperty('background') && obj.background === true) {
console.log('Aww shucks, you found me.');
return true;
}
});
これは明らかに疑似コードです。 本質的にすべてのオブジェクトをループし、戻り値がtrue
の場合は中断します。返される要素がtrue
の場合、some
の戻り値はtrue
になります。
Michal Dopieralskiコメント後のEDIT。
私は実際にはgetObjects
を渡すことができ、結果をフィルタリングします。そのことを使うことはさらに簡単になります。
canvas
.getObjects('image')
.some(obj => {
if (obj.background === true) {
console.log('Aww shucks, you found me.');
return true;
}
});
array some docs
fabricjs getObjects source
EDIT: 側hasOwnProperty
チェックは私は思いません要求されるべきではない注意してください。 obj
が定義されていれば、存在しないプロパティにアクセスするとundefined
が返されます。チェックは、=== true
で失敗します。
あなたはループ内で 'flag'を使うことができます。しかし、ループを終了させたい場合は' for-loop ... break; 'に行きます。 – Rayon
' continue n; 'を試しましたか? – Phil795
おそらく 'forEachObject'は各オブジェクトが' function(obj) 'に対して実行される前にループを終了するようには設計されていません。通常のfor-loopの使用を検討することをお勧めします。 – Ian