2011-11-30 9 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" }; 

Lo anterior funciona para crear mi matriz en JavaScript, pero ¿hay alguna forma más elegante de escribir lo anterior? Como un Inicializador de objetos? Sólo me preguntabaJavaScript Array Sintaxis

Respuesta

10

Puede crearlo en línea:

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

Se puede crear una matriz como:

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

Tenga en cuenta - esto no es JSON. Esa es una matriz literal con literales de objeto. JSON tiene una sintaxis muy específica, que no es así. Ver http://www.ietf.org/rfc/rfc4627.txt?number=4627 –

+2

regla de oro - si se trata de una cadena de caracteres JSON si es un objeto JS, entonces es solo un objeto JS – hugomg

+0

@missingno - I ' Siempre he entendido que no hay "objetos json", pero tu comentario realmente me lo ha solidificado ... gracias, y +1 en tu última respuesta :) –

1

Se podría reestructurarlo así:

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

También puede utilice algunos trucos para evitar volver a escribir algunas cosas en este caso particular

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

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

Ten en cuenta que el mapa no está disponible por defecto en los navegadores antiguos (pero variaciones de la misma son muy populares en las bibliotecas y cuñas)