2017-09-16 44 views
-2

我对JavaScript很新颖。 我想声明一个包含字符串和嵌套数组的变量。 例如: - 我需要一个变量来保存, 数组(表名,字段和每个字段的多个注释)。Javascript声明一个具有复杂JSON格式的变量

这里是我的代码,

var data = [ {tableName : String, [{fieldName : String, [comments:String]}] } ] 

这不是工作,请帮助我。

回答

1

表示为[value1,value2]的数组只能有值。

表示{key1:value1,key2:value2}的对象仅具有键值对。

它更容易看到这个问题,如果你把它写了多条线路:

var data = [ 
    { //we're in an object 
     tableName: "some-string", 
     //this next value doesn't have an associated key 
     [ 
     { //we're in an object 
      fieldName: "some-other-string", 
      //this next value doesn't have an associated key 
      [ 
       comments: "some-comments-string" //we're in an array, so key-value pairs don't work. 
      ] 
     } 
     ] 
    } 
]; 

我强烈推荐某种静态分析器像eslint的,以帮助识别这些类型的问题。你可能打算这样做(但问题并没有说清楚):

var data = [ 
    { 
     tableName: "some-table-name", 
     fields: [ 
     { 
      fieldName: "some-field-name",     
      comments: [ 
       "some-comment-1", 
       "some-comment-2" 
      ] 
     } 
     ] 
    } 
]; 

如果你感到困惑的JavaScript数组和对象之间的区别,试一下:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object

+0

感谢您的快速响应。但我不想在声明时填充我的数据。我只是想用数据类型声明,稍后会动态填充。让我知道可能性。 –

+0

这里我的终极目标是,我得到了上述json格式的回复,并且我希望将它存储到mongoDb –

+0

JavaScript并没有真正做到这样的事情 - 它不是一种静态类型的语言,因此您不需要定义数据结构提前(你可以,但它并不是真正的事情通常完成的方式)。它使用“鸭子”打字 - 换句话说,如果你的对象具有用于特定目的的必要字段,那么它具有用于该目的的正确类型。 –