2016-09-08 3 views
0

私は以下のようなコードを持っています:JSFiddle私はどこから離れているかによって2つの配列にjsonの文字列を並べ替えようとしています。私は私の例のJSON文字列を解析し、私の配列の両方を移入することができるよ、彼らがあるべきときには、投入されているときに、いくつかのポケモンが(Nearby[]配列から削除されていないことが表示されます他の配列に見つかった値が配列から一貫して削除されない

var pokemon = JSON.parse(JSONoriginal); //*See JSFiddle link for full JSON String* 

//encounter_ids are unique to each spawned pokemon, use these to look for & remove duplicates 
    for(var x=0; x <= pokemon.result.length-1; x++){ 
     var aPokemon = { 
       name: pokemon.result[x].pokemon_id, 
       encounter_id: pokemon.result[x].encounter_id, 
       expiration_timestamp_ms: pokemon.result[x].expiration_timestamp_ms, 
       latitude: pokemon.result[x].latitude, 
       longitude: pokemon.result[x].longitude 
       }; 
     if(pokemon.result[x].expiration_timestamp_ms === undefined){ 
      //Check if pokemon's already been put into nearby array, if so then we don't need to do anything 
      var a = nearby.filter(function(a){ 
       return a.encounter_id === aPokemon.encounter_id; 
       })[0]; 
      if(a === undefined){ 
       //Put in nearby Array because we don't have a location 
       nearby.push(aPokemon); 
      } 
     }else{ 
      //Check if pokemon's already been put into nearby array, if so then remove it from there 
      var b = nearby.filter(function(b){ 
       return b.encounter_id === aPokemon.encounter_id; 
       })[0]; 
      if(b !== undefined){ 
       nearby.splice(nearby.indexOf(b),1); 
      } 
      //Check if pokemon's already been put into immediate array, if so then we don't need to do anything 
      var c = immediate.filter(function(c){ 
       return c.encounter_id === aPokemon.encounter_id; 
       })[0]; 
      if(c === undefined){ 
       //Put it in immediate Array because we can locate & display them 
       immediate.push(aPokemon); 
      } 
     } 
    } 

Immediate[]アレイ)。誰でも私の論理に誤りを見つけられますか?このループを正しく動作させるにはどうすればよいですか?

答えて

1

したがって、即時セクションのIDを持つRattata、Krabby、Squirtleは近くのセクションに表示されませんか?問題は、expiration_timestamp_ms(2番目のエントリにはない)がある場合にのみ重複をチェックすることです。

[編集]

これは動作するはずです:近くにそれを押したときにエントリが即時配列にすでにあるかどうかを確認します。 JSFiddle

var a = nearby.filter(function(a){ 
    return a.encounter_id === aPokemon.encounter_id; 
    })[0] || immediate.filter(function(c){ 
    return c.encounter_id === aPokemon.encounter_id; 
    })[0]; 
+0

修正されました。直近のセクションに配置されると、近くのセクションに表示されません。あなたは良い点を挙げていますが、代わりに何を調べるべきですか? – CaffeinatedCoder

+1

私の編集をご覧ください。 – Ruud

+0

それはトリックでした!私はそれが私が行方不明だったことが明らかだった。本当にありがとう! – CaffeinatedCoder

関連する問題