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,这就是为什么第一个版本不起作用而第二个版本起作用的原因。

于 2013-06-23T01:57:20.763 回答
0

看起来一个从索引 0 开始数组,另一个从索引 1 开始

于 2013-06-23T01:56:27.233 回答
0

这取决于您的实现,但这可能是因为数组索引为 0。在您的第一个代码块中,每个数字从第二个块偏移一个索引点。第一个相当于:

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

以您为第二个区块编写的方式。

于 2013-06-23T01:56:57.407 回答
0

你应该这样做......在数组中的值被存储为第一个为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中声明一个数组(对象)

变量 x = []; -------------Literal - 它是 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 回答