按键-值对映射对象javascript

按键-值对映射对象javascript,javascript,Javascript,我有以下目标 { "timetable": { "MONDAY": { "start-end0": {}, "start-end1": {}, "start-end2": {}, "start-end3": {}, "start-end4": {} } } 我需要将“开始-结束5”添加到星期一。我试着

我有以下目标

     {
     "timetable": {
         "MONDAY": {
             "start-end0": {},
             "start-end1": {},
             "start-end2": {},
             "start-end3": {},
             "start-end4": {}
         }
     }
我需要将
“开始-结束5”
添加到
星期一
。我试着用点运算符来表示星期一,比如
时间表。monday.start-end5={}
它表示星期一未定义

  • monday
    不是
    monday
  • 由于
    start-end4
    不是有效的标识符,
    obj.timeline.MONDAY.start-end5={}
    将不会编译;您需要使用括号语法
因此,


您需要在此处使用
[“”]
符号,因为您的密钥名称不是camelCase或其他有效的对象密钥命名

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

变量名应遵循此限制

  • 不允许使用空格和逗号
  • 不允许使用下划线(\)以外的特殊符号
  • 第一个字符应该是字母或下划线
像这样试试

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

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

补充:

如何动态添加start-end5 start-end6。。。在我的地图上??可能吗

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] = {}
var时间={
“时间表”:{
“星期一”:{
“start-end0”:{},
“开始-结束1”:{},
“开始-结束2”:{},
“开始-结束3”:{},
“开始-结束4”:{}
}
}
}

对于(var i=0;i我想添加一个完全可行(且非常可读)的语法,只是为了好玩:

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

嗯,这是最基本的限制@rayon我怎样才能动态地
start-end5 start-end6…
添加到我的地图上?这可能吗?我已经添加了我的ans@masSdevits giving monday作为未定义的检查演示,我已经附加了@Massdevh我怎样才能动态地
start-end5 start-end6…
添加到我的地图上?这可能吗?@masSdev,你是什么意思n通过动态?在迭代中?是的,使用迭代,如
obj.timeline.MONDAY[“start end”+count]
@masSdev,您可以在迭代中的方括号中传递值。我认为它应该可以工作。@masSdev:什么意思,“像
obj.timeline.MONDAY[“start end”+count]
”?这正是可行的,所以…不确定您期望的答案是什么。但是,除非格式是由您无法控制的人设置的,否则这是一种不好的方式;最好将
obj.timeline.MONDAY.startEnd
作为一个对象数组,这样您就可以使用
obj.timeline.MONDAY.startEnd来访问每个对象
。您可以创建它,例如使用
数组.apply(null,{length:5}).map(i=>({}))
(在ES6中)。
time["timetable"]["MONDAY"]["start-end5"] = {};