2016-10-06 186 views
0

我有以下對象推鍵值對映射對象的JavaScript

 { 
    "timetable": { 
     "MONDAY": { 
      "start-end0": {}, 
      "start-end1": {}, 
      "start-end2": {}, 
      "start-end3": {}, 
      "start-end4": {} 
     } 
    } 

我需要添加"start-end5"MONDAY。我試圖用點操作週一喜歡timetable.monday.start-end5={}它說週一不確定

回答

1

一個更全面可行的(和可讀性很強)語法我想補充,只是爲了好玩:

time["timetable"]["MONDAY"]["start-end5"] = {}; 
8
  • mondayMONDAY
  • 由於start-end4是不是有效的標識符,obj.timetable.MONDAY.start-end5 = {}將無法​​編譯;您需要使用括號語法。

因此,

obj.timetable.MONDAY["start-end5"] = {}; 
+3

@masSdev唐如果它解決了您的問題,那麼請不要忘記將問題標記爲已接受。 – Hydrothermal

+0

我該如何動態添加'start-end5 start-end6 ...'到我的地圖?這可能嗎? – masSdev

+0

@masSdev,你是什麼意思動態?迭代? – VPK

2

這裏需要使用[""]符號,作爲你的鍵名不駝峯或其他有效對象鍵命名

a.timetable.MONDAY["start-end5"] = {}; 
3

變量名稱應遵循此限制

  • 空白&逗號是不允許的。
  • 除了下劃線(_)以外,不允許使用特殊符號。
  • 第一個字符應該是字母或下劃線。

嘗試這樣

var time = { 
    "timetable": { 
    "MONDAY": { 
     "start-end0": {}, 
     "start-end1": {}, 
     "start-end2": {}, 
     "start-end3": {}, 
     "start-end4": {} 
    } 
    } 
} 

time.timetable.MONDAY["start-end5"] = {} 

DEMO

Addtion:

如何我添加動態啓動END5啓動IE6 26 ...我的地圖?那可能嗎?

Ans

根據值添加循環和concat字符串。

像這樣

var time = { 
    "timetable": { 
    "MONDAY": { 
     "start-end0": {}, 
     "start-end1": {}, 
     "start-end2": {}, 
     "start-end3": {}, 
     "start-end4": {} 
    } 
    } 
} 
for(var i=0;i<5;i++) // set the limit of loop according to your need 
    time.timetable.MONDAY["start-end"+i] = {} 

DEMO

+0

我認爲有幾個(_many_)更多的限制.. – Rayon

+0

好吧,這是最基本的限制@Rayon –

+0

我怎樣才能動態地添加'start-end5 start-end6 ...'到我的地圖??這可能嗎? – masSdev