DataTable 中的多个数组

Posted

技术标签:

【中文标题】DataTable 中的多个数组【英文标题】:Multiple Arrays in DataTable 【发布时间】:2021-10-13 08:39:31 【问题描述】:

所以我正在做一个项目,但在尝试在数据表中使用多个数据数组时遇到了麻烦。

我遇到的问题是我的初始数据集来自共享点列表调用(计算变量)。

然后我使用该数组中的值来运行一些计算并将它们放入自己的数组(formulatedNumbers)中。

我的 DataTable 用数据很好地填充了前 6 列(使用计算数组),问题是将第二个数组(formulatedNumbers)放入第 7 列。

我构建数据表的javascript如下

TL;DR 在我使用第一个数组填充第 1-6 列后,我想使用另一个数组填充第 7 列。

function displayCalculations() 
    $("#table_id").dataTable().fnDestroy();
    var calculations = getRateData();
    var formulatedNumbers = [];

    for(i=0; i<calculations.length; i++) 
        formulatedNumbers.push(calculations[i].annum * calculations[i].dailyDecimal * 1000);
    

    console.log(formulatedNumbers);

    $('#table_id').DataTable(
        
            data: calculations,
            "columns": 
            [
                 "data": "startDate" ,
                 "data": "endDate" ,
                 "data": "dayTotal" ,
                 "data": "annum" ,
                 "data": "dailyRate" ,
                 "data": "dailyDecimal" 
            ],
        ); 
 

【问题讨论】:

【参考方案1】:

我建议只为calculations 中的每个项目添加新属性。

function displayCalculations() 
    $("#table_id").dataTable().fnDestroy();
    var calculations = getRateData();

    calculations.forEach(item =>
        item.newField = item.annum * item.dailyDecimal * 1000);

    console.log(calculations);

    $('#table_id').DataTable(
        
            data: calculations,
            "columns": 
            [
                 "data": "startDate" ,
                 "data": "endDate" ,
                 "data": "dayTotal" ,
                 "data": "annum" ,
                 "data": "dailyRate" ,
                 "data": "dailyDecimal" ,
                 "data": "newField"  // + ADDED
            ],
        ); 
 

【讨论】:

啊,好吧,我会试一试并报告! 所以在 forEach 之后 console.log 返回 undefined。我在它之前添加了一个控制台日志并将初始数据拉入,但在 forEach 未定义之后。 所以我删除了你的例子中的计算 = 部分,它起作用了!所以答案将被接受! 没问题!【参考方案2】:

不要为计算值创建新数组,而是将它们添加到您的其他数据中

calculations = calculations.map(calculation =>

    return calculation.push(calculation.annum * calculation.dailyDecimal * 1000);

【讨论】:

我已经接受了,但请点赞!这也可以。添加到我的数据中并没有发生在我身上,只是因为我没有足够的用途。欣赏替代答案! 这只会将值推送到没有键的数组中,虽然正确吗? 是的,但数据表不需要密钥。它使用索引 确实如此。只是想确认一下!

以上是关于DataTable 中的多个数组的主要内容,如果未能解决你的问题,请参考以下文章

DataTable 合并多个模式

C# 合并多个结构相同的DataTable

获取所有表到 DataTable[]

JS datatable表中的某一列如何获取

如何使用LINQ在具有多个条件的DataTable中的日期之间进行求和?

使用 Ajax Jquery 将 Json 结果返回的数据数组放入 DataTable 中