如何动态创建参数的名称

Joe*_*ack 3 javascript jquery

我有以下功能,我想更通用:

function addRow2(rowData) {
    var row = $("<tr />")
    $("#dataTable").append(row);
    row.append($("<td>" + rowData.param1 + "</td>"));
    row.append($("<td>" + rowData.param2 + "</td>"));
    row.append($("<td>" + rowData.param3 + "</td>"));
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

function addRow1(rowData) {
    var row = $("<tr />")
    $("#dataTable").append(row);
    for (i = 1; i <= 3; i++) {
        var marker = [];
        marker[i] = 'rowData.param'+i;
        alert(marker[i]);
        row.append($("<td>" + marker[i] + "</td>"));
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,它不是rowData.param1...... 的值,3而是打印"rowData.param1","rowData.param1"和"rowData.param1".

Irk*_*der 8

您可以使用括号表示法按字符串名称访问对象属性,如下所示:

marker[i] = rowData['param' + i];
Run Code Online (Sandbox Code Playgroud)

作为旁注,您将在每次迭代时创建一个新数组,并将您的属性名称存储i为该数组的第th个元素.您可以更简单地使用变量:

for (i = 1; i <= 3; i++) {
    var marker = rowData['param' + i];
    alert(marker);
    row.append($("<td>" + marker + "</td>"));
}
Run Code Online (Sandbox Code Playgroud)

或者单行:

for (i = 1; i <= 3; i++) {
    row.append($("<td>" + rowData['param' + i] + "</td>"));
}
Run Code Online (Sandbox Code Playgroud)