2011-11-30 72 views
7
var selectColumns = new Array(); 
selectColumns[0] = { TableName: "DeploymentRosterView", ColumnName: "ArrivedOn" }; 
selectColumns[1] = { TableName: "DeploymentRosterView", ColumnName: "DepartedOn" }; 
selectColumns[2] = { TableName: "DeploymentRosterView", ColumnName: "RoleType" }; 
selectColumns[3] = { TableName: "DeploymentRosterView", ColumnName: "AdjusterFirstName" }; 
selectColumns[4] = { TableName: "DeploymentRosterView", ColumnName: "AdjusterLastName" }; 

上面的工作是在JavaScript中创建我的数组,但是有没有更优雅的方式来编写上述内容?像对象初始化程序一样?只是想知道JavaScript Array语法

回答

10

您可以在线创建:

var selectColumns = [ 
    { TableName: "DeploymentRosterView", ColumnName: "ArrivedOn" }, 
    { TableName: "DeploymentRosterView", ColumnName: "DepartedOn" }, 
    { TableName: "DeploymentRosterView", ColumnName: "RoleType" }, 
    { TableName: "DeploymentRosterView", ColumnName: "AdjusterFirstName" }, 
    { TableName: "DeploymentRosterView", ColumnName: "AdjusterLastName" }]; 
1

您可以创建这样一个数组:

var selectColumns = [ 
    { TableName: "DeploymentRosterView", ColumnName: "ArrivedOn" }, 
    { TableName: "DeploymentRosterView", ColumnName: "DepartedOn" }, 
    { TableName: "DeploymentRosterView", ColumnName: "RoleType" }, 
    { TableName: "DeploymentRosterView", ColumnName: "AdjusterFirstName" }, 
    { TableName: "DeploymentRosterView", ColumnName: "AdjusterLastName" } 
]; 
+2

请注意 - 这不是JSON。这是一个带有对象字面值的数组字面值。 JSON具有非常特定的语法,但事实并非如此。请参阅http://www.ietf.org/rfc/rfc4627.txt?number=4627 –

+2

经验法则 - 如果它是一个字符串其JSON,如果它是一个JS对象,那么它只是一个JS对象 – hugomg

+0

@missingno - 我'总是有点理解,没有“JSON对象”,但你的评论真的巩固了我的...谢谢你,并在你最后的答案:) –

1

你可能重组它像这样:

var selectColumns = { 

    "DeploymentRosterView": { 
    "ColumnNames": ["DepartedOn", "RoleType", "AdjusterFirstName", "AdjusterLastName"] 
    } 
}; 

// Loop through all views 
for (view in selectColumns) 
{ 
    var v = selectColumns[view].ColumnNames; 
    alert('Column names for "' + view + '" is: ' + v.join(', ')); 
}​ 
0

你也可以使用一些技巧来避免在这种特殊情况下重新输入一些东西

var columnNames = ["ArrivedOn", "DepartedOn", "RoleType", "AdjusterFirstName", "AdjusterLastName" ]; 

var selectColumns = columnNames.map(function(colName){ 
    return { TableName: "DeploymentRosterView", ColumnName: colname }; 
}); 

请注意,地图默认不可用旧的浏览器(但它的变化是在图书馆和垫片非常流行)