JavaScript/jQuery:将项推送到数组/对象,每个项使用相同的键

JavaScript/jQuery:将项推送到数组/对象,每个项使用相同的键,javascript,jquery,arrays,associative-array,Javascript,Jquery,Arrays,Associative Array,我使用DataTables并尝试动态生成“aoColumns”值,这样我就不必硬编码它们 我尝试了以下方法,但似乎是错误的。 我的猜测是,我正在覆盖每行中的同一个键,而不是将其追加到另一行 考虑到所有值的键“mData”都保持不变,有人能告诉我如何正确执行此操作吗 预期结果: var tableDT = $('#tblReport').dataTable({ dom: 'Bfrtip', "bProcessing": true,

我使用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
动态方法:

    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
var reportColsShort='col1、col2、col3、col4、col5';//用于测试目的
var aoCols=[];

对于(var i=0;i是的,您犯了一个小错误,您需要推送到数组,但您正在替换地图中的键

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

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

您希望拆分字符串,而不是对其进行迭代。然后,您希望对拆分后的元素数组进行迭代,并为每个元素创建一个对象并将其推入数组

var reportColsShort='col1、col2、col3、col4、col5';
var aoCols=[];
reportColsShort.split(',').forEach(项=>{
推({
“mData”:项
})
})

console.dir(aoCols);
您需要在for循环中创建新的JSON对象,然后将该值推送到主JSON数组中

演示代码

var reportColsShort='col1,col2,col3,col4,col5';//用于测试目的
var aoCols=[];
var colss=reportColsShort.split(“,”;//拆分值
//如果数组不需要拆分
对于(变量i=0;i
使用推送

    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]})
    }

也非常感谢您对这个变量的评论。不过,这种方法似乎不适合我,我认为它缺少了一个方括号。