2013-06-23 3 views
0

У меня очень простой вопрос с массивами JS, моя простая игра с холстом ведет себя по-другому, когда я заменил один блок кода на другой. Не могли бы вы просмотреть их и посмотреть, почему они функционально отличаются друг от друга и, может быть, предлагают предложение? Мне могут понадобиться эти массивы, чтобы иметь 20 предметов, поэтому я ищу более сжатый стиль.очень простой, синтаксис javascript arrays

Там эта одна, которая является достаточно коротким для меня работать, но не работает хорошо:

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; 

ответ

1

Вы должны сделать это .... в значениях массивов хранятся как таковые, что первый из них равен 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 = []; ------------- Literal - это ярлык, предоставляемый JS, чтобы быстро объявить что-то как массив.

var x = new Array; --Array конструктор

вещь смотреть вверх относительно

буквальной

  • объекта буквальной
  • прот
  • слова новой
  • объекта функция
  • функции рг operty прототип

Вы также можете сделать это:

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.

1

похоже, один начинает массивы с индексом 0, а другой начинается с индекса 1

+0

Спасибо! Я забыл об этом, всегда сталкиваюсь с этой проблемой :) – KrokosPro

1

это зависит от реализации, но это, вероятно, из-массивов, являющихся 0-индексироваться. В вашем первом блоке кода каждый номер смещается на одно индексное пятно от второго блока. Первый из них эквивалентен:

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

так, как вы написали его для второго блока.

+0

Спасибо! Я забыл об этом, всегда сталкиваюсь с этой проблемой :) – KrokosPro

3

Массивы индексируются без ошибок в JavaScript. Первый элемент 0, не 1:

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

Кроме того, вы можете использовать более общий конструктор массива:

var srd = [1, 1, 1]; 

У меня есть ощущение, что вы можете быть в предположении, что первый элемент 1 вместо 0, поэтому первая версия не работает, а вторая.

+0

Спасибо! Я забыл об этом, всегда сталкиваюсь с этим вопросом :) – KrokosPro