簡體   English   中英

推送鍵值對以映射對象javascript

[英]Push key value pair to map object javascript

我有以下對象

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

我需要將"start-end5"添加到MONDAY 我試圖像周一的timetable.monday.start-end5={}一樣使用點運算符來表示星期一未定義

  • monday不是MONDAY
  • 由於start-end4不是有效的標識符,因此obj.timetable.MONDAY.start-end5 = {}將不會編譯; 您需要使用方括號語法。

從而,

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

變量名應遵循此限制

  • 不允許使用空格和逗號。
  • 除下划線(_)之外,不允許使用其他特殊符號。
  • 首字符應為字母或下划線。

這樣嘗試

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

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

DEMO

加法:

如何將start-end5 start-end6 ...動態添加到地圖?

安斯

根據值添加一個循環和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

您需要在此處使用[""]表示法,因為您的鍵名不是camelCase或其他有效的對象鍵名

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

我想添加一種更可行(且易讀)的語法,只是為了好玩:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM