繁体   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