0

非常に単純な JS 配列の質問があります。コードのブロックを別のブロックに置き換えると、単純なキャンバス ゲームの動作が異なります。それらを調べて、機能的に互いに異なる理由を確認し、提案を提供していただけますか? これらの配列に 20 個以上のアイテムが必要になる可能性があるため、より凝縮されたスタイルを探しています。

これは、私が作業するには十分短いですが、うまく動作しません:

var srd=new Array(1,1,1);
var sw=new Array(0,0,0);
var sang=new Array(0,0,0);
var sHealth=new Array(20,20,20);

そして、オリジナルのものがあります。これはより長いですが、正常に動作します:

var srd = new Array();
srd[1] = 1; 
srd[2] = 1; 
srd[3] = 1; 
var sw = new Array();
sw[1] =0; 
sw[2] =0; 
sw[3] =0; 
var sang = new Array();
sang[1] = 0; 
sang[2] = 0; 
sang[3] = 0;
var sHealth = new Array();
sHealth[1] = 20; 
sHealth[2] = 20; 
sHealth[3] = 20;
4

4 に答える 4

2

JavaScript では、配列のインデックスはゼロです。最初の要素は0であり、 ではありません1:

var srd = new Array();
srd[0] = 1; 
srd[1] = 1; 
srd[2] = 1; 

また、より一般的な配列コンストラクターを使用することもできます。

var srd = [1, 1, 1];

1最初の要素がではなく であると想定しているように感じます。その0ため、最初のバージョンは機能しませんが、2 番目のバージョンは機能します。

于 2013-06-23T01:57:20.763 に答える
0

これを行う必要があります.... in配列の値は、最初の値が0になるように保存されます。したがって、最初の値は次のようにアクセスされます...

 var x = abc[0]; //first value of array abc being assigned to x.

これを行います(私が実際にあなたの質問を読んでいて、これがあなたの好きなものです)

 var srd=['',1,1,1];
 var sw=['',0,0,0];
 var sang=['',0,0,0];
 var sHealth=['',20,20,20];

このようにJavaScriptで配列(オブジェクト)を宣言できます

var x = []; -------------リテラル - 何かを配列としてすばやく宣言するために JS によって提供されるショートカットです。

var x = 新しい配列; -- 配列コンストラクター

調べたいこと

リテラル

  • オブジェクトリテラル
  • プロト
  • 新しい言葉
  • 関数オブジェクト
  • 関数プロパティのプロトタイプ

次のこともできます。

var x=1,y=2, z=3, f;

var b = something || {}; \\become a copy of object called something if it's not there then become an empty object.

于 2013-06-23T02:17:37.940 に答える
0

1つはインデックス0で配列を開始し、もう1つはインデックス1で開始するように見えます

于 2013-06-23T01:56:27.233 に答える
0

実装によって異なりますが、配列のインデックスが 0 であることが原因である可能性があります。コードの最初のブロックでは、各数値は 2 番目のブロックから 1 つのインデックス スポットだけオフセットされます。最初のものは以下と同等です:

var srd = new Array();
srd[0] = 1; 
srd[1] = 1; 
srd[2] = 1; 

2番目のブロックに書いた方法で。

于 2013-06-23T01:56:57.407 に答える