2017-01-05 16 views
0

私は例えば数字やオブジェクトの配列を、持っている:配列によるswitchステートメント内の特定のキー/値のペアを持つオブジェクトのチェックのJavascript

var array = [0,0,1,0,2, {type:player, health:100, xp: 0}, 0,2,1,0, {type:weapon, damage:20}] 

次にIループおよびI変数に文字列を設定しますクラスを動的に設定するために使用します。今の

I switch文では、次のループを持っている:

for(var i = 0; i < array.length; i++){ 

     var setClass = ""; 

     switch (array[i]) { 

      case 1: 
      setClass = "walkable"; 
      break; 
      case 2: 
      setClass = "wall"; 
      break; 
      default: 
      setClass = "outside" 

     } 
} 

私は何をしたいことは、ループ内のアイテムは、1)オブジェクトがある場合は、switch文のチェックにあり、2)一定とキー/値のペア?だから私はタイプのための何かに文字列を設定したい:プレーヤーとタイプ:武器のための何か。どうやってやるの?

+0

まず、foreachループを使用します。ところで、これは、反応拡張のmapReduceアルゴリズムの良い例です – alpham8

+0

素早い質問ですが、配列の値を入れ替えたいですか?または配列のインデックスを有効にしますか? 'coz今のインデックスのために切り替えている –

+0

http://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascriptに関する#1 –

答えて

0

あなたは、私は、これはあなたが期待しているものであると思いループ内

array.forEach(function(element) { 
    if (element.hasOwnProperty('type')) { 
      switch (element.type) { 
       case "player": 
       ... 
       break; 
       case "weapon": 
       ... 
       break; 
       default: 
       ... 
      } 
    } 
}); 
1

を使用することができます。

var array = [0,0,1,0,2, {type:player, health:100, xp: 0}, 0,2,1,0, {type:weapon, damage:20}] 

for(var i = 0; i < array.length; i++){ 

     var setClass = ""; 

     switch (array[i]) { 

      case 1: 
      setClass = "walkable"; 
      break; 
      case 2: 
      setClass = "wall"; 
      break; 
      default: 
      if (Object.prototype.toString.call(array[i]) === '[object Object]'){ 
       //This means the value is an Object 
       //And here you can check its type like 
       if (array[i].type === 'player') { 
        //Do something 
       } 
      } 
      setClass = "outside" 

     } 
} 
0

希望これはあなたが達成しようとしているものである:すべての

for(var i = 0; i < array.length; i++){ 

    var setClass = ""; 
    if(array[i] !== null && typeof(array[i]) === "object"){ 

     switch (array[i]) { 

     case "player": 
     setClass = "walkable"; 
     break; 
     case "weapon": 
     setClass = "wall"; 
     break; 
     default: 
     setClass = "outside" 

    } 
    } 
} 
+0

です。 'typeof'は演算子なので、'() 'が必要です。 また、' null'値に 'object'を返します。これはバグで終了するかもしれません。 –

+0

@AkhilArjun:それは誤字です。それを修正しました。 – superUser

関連する問題