Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.05.2013, 23:40
Аватар для Paulyyy
Интересующийся
Отправить личное сообщение для Paulyyy Посмотреть профиль Найти все сообщения от Paulyyy
 
Регистрация: 01.05.2013
Сообщений: 21

сложение значений в массиве - NaN
работаю над csv файлом. колонка state отвечает за штат, а balance за баланс типа "122.11") мне надо вывести общий баланс по каждому штату, и при повторе штатов баланс увеличивается. Если таким образом исполнять функцию, то штаты в консоле показываются, а вместо значений баланса выдает NaN- возможно у кого-то будут идеи как решить это?
заранее спасибо!
function stateBalance(array) {
var states = new Array();

for (var i = 1; i < array.length; i++) {

var state = array[i][5];


var balance = array[i][12]
.slice(1, -1);

if (typeof array[i][5] == 'undefined') states[state] = 0;

states[state] += parseFloat(balance);


}
return states

}
Ответить с цитированием
  #2 (permalink)  
Старый 15.05.2013, 13:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от Paulyyy
как решить это?
Проверить таки тыпы тех операндов. Потому как NaN

Цитата:
NaN

Не-Числовое значение
Описание, примеры

Изначальное значение NaN - такое же, как Number.NaN.

Как правило, оно используется для обозначения ошибки при математических операциях. Вместо генерации исключения, функция возвращает NaN.
http://javascript.ru/NaN
Ответить с цитированием
  #3 (permalink)  
Старый 15.05.2013, 16:56
Аватар для Paulyyy
Интересующийся
Отправить личное сообщение для Paulyyy Посмотреть профиль Найти все сообщения от Paulyyy
 
Регистрация: 01.05.2013
Сообщений: 21

NaN выдает потому что андефайнд прокрался после этого вычисления states[state] += parseFloat(balance); по этому я прописала if (typeof array[i][5] == 'undefined') states[state] = 0;

почему не суммируется..
Ответить с цитированием
  #4 (permalink)  
Старый 15.05.2013, 16:59
Аватар для Paulyyy
Интересующийся
Отправить личное сообщение для Paulyyy Посмотреть профиль Найти все сообщения от Paulyyy
 
Регистрация: 01.05.2013
Сообщений: 21

когда в консоле вывожу typeof balance то пишет string. но используется ведь parseFloat к нему же
Ответить с цитированием
  #5 (permalink)  
Старый 15.05.2013, 17:14
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Paulyyy
возможно у кого-то будут идеи как решить это?
отфильтровать массив
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #6 (permalink)  
Старый 16.05.2013, 15:39
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от Paulyyy
когда в консоле вывожу typeof balance то пишет string. но используется ведь parseFloat к нему же
Посмотри чему он равен до того и после того... Чему таки равен
states[state]

Т.е. дело точно в операндах.
Ответить с цитированием
  #7 (permalink)  
Старый 16.05.2013, 16:34
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

лол а при получени операндов нельзя проверить из на нан? или ты считаешь что чем больше строчек кода и действий тем программа тупит и экономишь)? (бывало и такоебыдло)
Ответить с цитированием
  #8 (permalink)  
Старый 16.05.2013, 16:42
Аватар для Paulyyy
Интересующийся
Отправить личное сообщение для Paulyyy Посмотреть профиль Найти все сообщения от Paulyyy
 
Регистрация: 01.05.2013
Сообщений: 21

Сообщение от ksa Посмотреть сообщение
Посмотри чему он равен до того и после того... Чему таки равен
states[state]

Т.е. дело точно в операндах.
дело в них.
что убрать строку с if что оставить то states[state] = number, balance и state = string... ну а если до сложения то меняется только states[state] на undefined.

Находила много вариантов как бы balance( числа типа '122.22' ) перевести в число чтобы просуммировать, ничего правильно не получилось.
Ответить с цитированием
  #9 (permalink)  
Старый 16.05.2013, 17:00
Аватар для Paulyyy
Интересующийся
Отправить личное сообщение для Paulyyy Посмотреть профиль Найти все сообщения от Paulyyy
 
Регистрация: 01.05.2013
Сообщений: 21

Сообщение от megaupload Посмотреть сообщение
лол а при получени операндов нельзя проверить из на нан? или ты считаешь что чем больше строчек кода и действий тем программа тупит и экономишь)? (бывало и такоебыдло)
Не стараюсь экономить. Недавно изучаю js, по этому экономия у меня не в приоритете)
Ответить с цитированием
  #10 (permalink)  
Старый 17.05.2013, 09:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,124

Сообщение от Paulyyy
ничего правильно не получилось.
Нужно начать с простого...
1. Понять на каких именно данных получается НаН
2. На простом примере научиться переводить разнотипные операнды к нужному типу
3. Применить полученые навыки
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в массиве, частичное совпадение фонарик Общие вопросы Javascript 25 04.04.2013 07:43
Опыты с NaN. В чём прикол. ILL-JAH Общие вопросы Javascript 10 05.04.2011 20:58
Сложение значений внутри тегов с классами Андрей Аркадьевич Firefox/Mozilla 14 28.03.2011 17:40
Сложение нескольких значений элементов frolvict jQuery 2 04.12.2010 11:52
Переодическое обновление значений для графика, функция для обновления значений yupa87 Общие вопросы Javascript 0 09.07.2009 14:48