Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с отрицательными числами и массивом (https://javascript.ru/forum/misc/49733-problema-s-otricatelnymi-chislami-i-massivom.html)

FreeZa 26.08.2014 17:30

Проблема с отрицательными числами и массивом
 
Доброго времени суток, столкнулся толи с математическим глюком, толи со своим не пониманием языка...

var temp = []; //создал массив
temp['blabla']= -1; //задал отрицательное значение

var bombom = true;
if(bombom == true){
     temp['blabla'] = temp['blabla']+1; //ожидание (-1 + 1 = 0)
}
console.log(temp['blabla']); //реальность (-1 + 1 = 1)


собственно как получить 0 ? =)

Заметил, что такое происходит только, когда работаю с массивом

skrudjmakdak 26.08.2014 17:36

чему равно ваше blabla?
var temp = []; //создал массив
console.log(blabla);
temp[blabla]= -1; //задал отрицательное значение


и вот так не пишут:
if(bombom == true) {...

внутри оператора if результатом выражения является булево значение, а у вас переменная и так булева, поэтому будет достаточно вот такого варианта:
if(bombom) {...

FreeZa 26.08.2014 17:44

Цитата:

Сообщение от skrudjmakdak (Сообщение 327613)
чему равно ваше blabla?
var temp = []; //создал массив
console.log(blabla);
temp[blabla]= -1; //задал отрицательное значение


и вот так не пишут:
if(bombom == true) {...

внутри оператора if результатом выражения является булево значение, а у вас переменная и так булева, поэтому будет достаточно вот такого варианта:
if(bombom) {...


Вообще это я для примера написал blabla и тд...
Вообще ключ в массиве это id элемента который я обрабатываю, для удобства, а его значение изначально равно 0

Условие на счет true это тоже только для примера, проблема то не в срабатывании условия, а в том что

-1 + 1 = 1 и наоборот 1 - 1 = -1
Хотя в обоих случаях должен быть 0

MallSerg 26.08.2014 17:48

в приведенном тобой примере в консоль выводится 0

Octane 26.08.2014 17:50

У меня 0 получается, что я делаю не так?

skrudjmakdak 26.08.2014 17:58

http://pixs.ru/showimage/Bezimyanni_...1_13576272.png
кстати да, работает. я чет не догадался запустить))

ixth 26.08.2014 18:02

У меня вернулся ноль.

FreeZa 26.08.2014 18:12

Хихи...это у меня косяк в коде, оказалось что я ключ вообще не передавал в переменную :lol: собственно и получалось что я делаю примерно так

var temp = [];
temp[] = 0;
//a должна быть равна -1, а по факту она не определена
temp[a] = temp[a]+1;
//по факту получалось следующее
temp[] = temp[]+1;
temp[] = temp[]-1;

:lol:

skrudjmakdak 26.08.2014 18:25

FreeZa, яж про это и спрашивал. ну да ладно, главное разобрался


Часовой пояс GMT +3, время: 15:02.