JavaScript数组语法

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创建了一个数组,但是是否有更优雅的方式编写此代码?比如使用对象初始化器等。只是想问一下。
4个回答

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。 - Chris Baker
2
经验法则 - 如果它是一个字符串,那么它就是JSON,如果它是一个JS对象,那么它只是一个JS对象。 - hugomg
@missingno - 我一直都有点明白没有“json对象”的概念,但是你的评论真正加深了我的理解......谢谢你,并且对你最后一个答案点个赞:) - Adam Rackis
两个踩并不是“可怕的反应”。答案在技术上是不正确的,这就是踩的机制所在。你已经被告知了踩的原因,你本可以利用这个机会来纠正不准确之处(如果你这样做了,我会取消我的踩),而你却用耸肩和“差不多了”(这是更大的不准确)来为不准确辩护?太糟糕了。 - Chris Baker
@balkon_smoke - 我给你点了赞,所以你的努力净增加了8分 :) - Adam Rackis
显示剩余3条评论

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

请注意,在旧浏览器上默认情况下不支持map(但在库和shim中的其变体非常流行)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接