繁体   English   中英

JavaScript / jQuery:将项目推送到每个项目具有相同键的数组/对象

[英]JavaScript / jQuery: Push items to array / object with same key for each item

我使用 DataTables 并尝试动态生成“aoColumns”值,这样我就不必对它们进行硬编码。

我尝试了以下方法,但这似乎是错误的。
我的猜测是我在每一行中覆盖了相同的键,而不是将它相互附加。

有人可以告诉我如何正确地做到这一点 -考虑到所有值的关键“mData”保持不变

预期结果:

    var tableDT = $('#tblReport').dataTable({
        dom: 'Bfrtip',
        "bProcessing": true,
        "sAjaxSource": "data.php",
        "aoColumns": [
            { mData: 'col1' },
            { mData: 'col2' },
            { mData: 'col3' },
            { mData: 'col4' },
            { mData: 'col5' }
        ]

动态方法:

    var reportColsShort = 'col1,col2,col3,col4,col5'; // for testing purposes
    var aoCols = [];
    
    for(var i = 0; i <reportColsShort.length; i++){
        aoCols['mData'] = reportColsShort[i];
    }

    var tableDT = $('#tblReport').dataTable({
        dom: 'Bfrtip',
        "bProcessing": true,
        "sAjaxSource": "data.php",
        "aoColumns": aoCols

是的,您犯了一个小错误,您需要推送到数组,但是您正在替换地图中的键。

您只需要更改 for 循环内的逻辑:

for(var i = 0; i <reportColsShort.length; i++){
        aoCols.push({ 'mData' : reportColsShort[i] } );
    }

然后你应该得到你想要的输出。 您还应该将reportColsShort变量更改为数组:

var reportColsShort = 'col1,col2,col3,col4,col5'.split(",");

您需要在 for 循环中创建新的 JSON 对象,然后将此值推送到您的主 JSON 数组。

演示代码

 var reportColsShort = 'col1,col2,col3,col4,col5'; // for testing purposes var aoCols = []; var colss = reportColsShort.split(",");//split values //if array no need of split for (var i = 0; i < reportColsShort.split(",").length; i++) { var aoColss = {}//decalre this aoColss['mData'] = colss[i];//add value to json object aoCols.push(aoColss)//push value in main json arry } console.log(aoCols)

您想拆分字符串,而不是对其进行迭代。 然后你想遍历拆分元素的数组,并为每个元素创建一个对象并将其推送到数组中。

 var reportColsShort = 'col1,col2,col3,col4,col5'; var aoCols = []; reportColsShort.split(',').forEach(item => { aoCols.push({ 'mData': item }) }) console.dir(aoCols);

使用推。

    var reportColsShort = ['col1','col2','col3','col4','col5']; // for testing purposes

    var aoCols = [];

    for(var i = 0; i <reportColsShort.length; i++){
        aoCols.push({'mData':reportColsShort[i]})
    }

如果您没有上述格式的 reportColsShort 变量,请使用拆分。

var reportColsShort = 'col1,col2,col3,col4,col5'.split(',')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM