按键-值对映射对象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"] = {};