2016-01-19 2 views
3

Я делаю приложение для шахмат на практике, и что-то меня отбрасывает. Мои квадраты пронумерованы от 1 до 64, причем первая строка занимает от 1 до 8, а следующая - 9-16 и т. Д. Каждый раз, когда игрок пытается переместить кусок, моя программа проверяет, является ли квадрат назначения законным в соответствии с правилами.Целое число ошибочно разбирается со строкой

Для моего короля У меня есть строка, как это:

else if (startID >= 58 && startID <= 63){ // bottom row 
       if (endID == startID - 7 || endID == startID - 8 || endID == startID - 9 || endID == startID - 1 || endID == startID + 1) return true; 
      } 

В принципе, если король находится на последней строке (а не угол квадрата), проверьте, если площадь назначения смежная кв. Тем не менее, все они работают в этой части, которая проверяет, за исключением, если площадь назначения непосредственно справа:

endID == startID + 1 

Я имел другие части программы борьбы с использованием сравнить заявления, пока я не добавить «ParseInt () перед проблематичной переменной. Есть ли способ убедиться, что переменная всегда является целым числом?

+0

Да, используйте 'parseInt (startID, 10)' – mplungjan

+0

Нет, JavaScript не использует типы. Но почему бы вам не использовать вложенный массив для поддержания позиций? – sjngm

+0

Где/как вы первоначально получаете эти значения для 'startID' и' endID'? Из атрибута HTML? – Teemu

ответ

0

Вы можете попробовать следующее

var myStringNum = "1"; 
if (myStringNum === parseInt(myStringNum, 10) && myStringNum !== NaN){ 
    console.log('ok'); // does not print anything 
} 

var myNormalNum = 1; 
if (myNormalNum === parseInt(myNormalNum, 10) && myNormalNum !== NaN){ 
    console.log('ok'); // prints ok 
} 

Хитрость использует '===' оператора.

Вот jsfiddle example.

+0

Когда я заменяю все экземпляры == с ===, моя программа, похоже, больше не работает, может быть, потому, что у меня есть parseInt(), участвующий в некоторых сравнениях – MarksCode

+0

@ user3509099 Прежде чем делать какие-либо сравнения, убедитесь, что вы конвертируете переменную, которую используете, к целому числу с использованием метода parseInt (myVar, 10) ;. –

Смежные вопросы