DataTables:未捕获的TypeError:减少没有初始值的空数组

时间:2019-09-26 20:04:10

标签: javascript jquery datatables

我具有以下功能

footerCallback: function ( row, data, start, end, display ) {
    var api = this.api();
    // Remove the formatting to get integer data for summation
    var intVal = function ( i ) {

        return typeof i === 'string' ?
            i.replace(/[\$,]/g, '')*1 :
            typeof i === 'number' ?
                i : 0;

    };
    var i;
    for (i = 1; i <=96; i++) { 
        if (api.column(i).data().length){
            console.log('[+] api.column( i ).data()');
            console.log(api.column( i ).data());
            var total = api.column( i ).data().reduce( function (a, b) {
                console.log( intVal(a) + intVal(b));
                return intVal(a) + intVal(b);
                }) 
            }
        else { 
            total = 0
        };
        // Total over this page
        if (api.column(i).data().length){
            var pageTotal = api.column( i, { page: 'current'} ).data().reduce( function (a, b) {
                return intVal(a) + intVal(b);
            })
        }
        else{ 
            pageTotal = 0
        };

        // Update footer
        $( api.column(i).footer() ).html(total);
    }

    // Total over all pages

},

它将列中的值相加并将其添加到总计中。所以我有两个版本。一种有效,一种无效。两个页面中使用的代码完全相同

工作控制台。登录

enter image description here

控制台损坏。登录

错误:Uncaught TypeError: Reduce of empty array with no initial value

enter image description here

我注意到损坏的一个有红色文本,并且每个0或1都带有双引号。

奇怪的是....损坏的版本完成的工作与总数中显示的数字一样多,但是由于错误,页面仍然坏了

1 个答案:

答案 0 :(得分:0)

删除以下内容有效-它未被使用,但仍然会引起问题

 // Total over this page
        if (api.column(i).data().length){
            var pageTotal = api.column( i, { page: 'current'} ).data().reduce( function (a, b) {
                return intVal(a) + intVal(b);
            })
        }
        else{ 
            pageTotal = 0
        };