@Roman-OverOffers

NaN: как привести в порядок данные на JS?

Привет!
Я сейчас занят реализацией подсчета Totals в dataTables, использую такую функцию.

var stat_options = $.extend({
    "sAjaxSource": "/dashboard/graph/", 
    "aoColumns": [
        { "mData": "date" }, 			
        // {"mData":"clicks"}, 
        { "mData":"unique_clicks" }, 
        { "mData":"events_count" },
        { "mData":"approved" },
        { "mData":"pending" },
        { "mData":"rejected" }, 
        { "mData":"cpc" }, 
        { "mData":"ltr" }, 
        { "mData":"approval_rate" }, 
        // {"mData":"total_revenue"}, 
        // {"mData":"rejected_revenue"},
        { "mData":"pending_revenue" },
        { "mData":"approved_revenue" }  
    ], 
    "fnFooterCallback": function( nRow, aaData, iStart, iEnd, aiDisplay ) {
                var iClicks = 0
                var iConv = 0
                var iPendingRevenue = 0
                var iApprovedRevenue = 0
                for ( var i=0 ; i<aaData.length ; i++ )
                {
                    iClicks += aaData[i][1]*1;
                    iConv += aaData[i][2]*1;
                    iPendingRevenue += aaData[i][9]*1;
                    iApprovedRevenue += aaData[i][10]*1;
                }
             
                var nCells = nRow.getElementsByTagName('th');
                nCells[1].innerHTML = parseInt(iClicks);
                nCells[2].innerHTML = parseInt(iConv);
                nCells[9].innerHTML = parseInt(iPendingRevenue);
                nCells[10].innerHTML = parseInt(iApprovedRevenue);
    }
}, tables_options);


Пытаюсь считать в Totals:
unique_clicks, events_count, pending_revenue, approved_revenue.
Формат респонса JSON вплане чисел.

"unique_clicks": "1001",
"events_count": 38,
"pending_revenue": 1000.0,
"approved_revenue": 1500.0
если нет данных выводит везде 0

Как их перевести в numeric?
В JS я полный ноль.
  • Вопрос задан
  • 2628 просмотров
Решения вопроса 1
@alekstsk
Раз у вас такой неоднородный ответ, parseInt нужно каждый элемент в цикле. Сейчас вы парсите уже строку, склеенную из всех элементов.
-------------------------------------------------------------
Пардон, первый раз я невнимательно посмотрел, приведение к number уже есть в цикле.
Если вот это:
"2013-06-17": {"payout": "7900.000000", "ltr": "2.9277", "pending_revenue": 1500.0, "leads": "32", "events_count": 38, "cpc": "7.23", "rejected": 3, "approved_revenue": 7900.0, "unique_clicks": "1093", "date": "2013-06-17", "approval_rate": 84, "approved": 32, "pending": 3, "rejected_revenue": 1000.0},

-кусок aaData, то проблема в том, что это объект, содержащий объекты, вы его пытаетесь перебрать как массив содержащий объекты с массивами. а у него даже поля length нет.

for (i in aaData){
   iClicks += parseInt(i['unique_clicks'], 10);
   ........
}

как то вот так я вижу
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
nazarpc
@nazarpc
Open Source enthusiast
Возможно, вам помогут parseInt() и parseFloat()?
Ответ написан
@Roman-OverOffers Автор вопроса
Пример респонса

"2013-06-17": {"payout": "7900.000000", "ltr": "2.9277", "pending_revenue": 1500.0, "leads": "32", "events_count": 38, "cpc": "7.23", "rejected": 3, "approved_revenue": 7900.0, "unique_clicks": "1093", "date": "2013-06-17", "approval_rate": 84, "approved": 32, "pending": 3, "rejected_revenue": 1000.0},
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы