2017-06-19 1 views
0

ここで配列メソッド 'every'がなぜ機能しないのか分かりません。なぜJavaScriptではないすべてのメソッドが機能していますか?

{ 
    x: newrm.x, 
    y: newrm.y + 10, 
    w: newrm.w, 
    h: newrm.h, 
    centerx: newrm.centerx, 
    centery: newrm.centery + 10 
    } 

私がやろうとしているすべてがこの新しい配列内の各要素には、以下の試験に合格するかどうかのテストである(これが防止される:(。ローグライクダンジョンクローラーゲームに取り組んで) 私はそうのようなオブジェクトの配列を持っていますすべてのメソッドを介した壁を持つプレーヤーの衝突):

if (newdraw.every(isWithin)) { 
    ctx2.clearRect(0, 0, width, height); 
    this.setState({ dungeon: newdraw }); 
} 
function isWithin(obj) { 
    console.log('this is the obj and this is the player', obj, player); 
    return obj.x < player.x + player.w && obj.x + obj.w > player.x && obj.y < player.y + player.h && obj.h + obj.y > player.y; 
} 

は、2つのオブジェクトの合計だけがコンソールに記録されているとして、すべての要素が、確認されていないようです。

+2

'.every()'メソッドは、条件に合致しない要素が見つかるとすぐに反復処理を停止します。 – nnnnnn

+0

つまり、ANYのnewdrawがfalseになると、ifブロック内のコードは実行されません –

+0

私はEveryについて把握できなかったような単純なものだと思っていました。 – laervonica

答えて

2

これはどのように動作するのですか。それは偽の値を見つけたら停止します。 MDNを参照:これはコールバック がfalsy値を返すものを見つけるまで https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every

をすべての方法は、アレイに存在する各 要素に対して一度に設けられたコールバック関数を実行します。そのような要素が見つかった場合は、すべてのメソッド が直ちにfalseを返します。

関連する問題