Javascript 有没有较短的路
我编写了以下代码片段来生成一个对象Javascript 有没有较短的路,javascript,json,Javascript,Json,我编写了以下代码片段来生成一个对象 { "2018": { "02": { "18": { "scheduledSlots": 0, "totalSlots": 0, "slots": null } } } } 这感觉是不对的 const obj = {} obj[date[2]]
{
"2018": {
"02": {
"18": {
"scheduledSlots": 0,
"totalSlots": 0,
"slots": null
}
}
}
}
这感觉是不对的
const obj = {}
obj[date[2]] = {};
obj[date[2]][date[1]] = {};
obj[date[2]][date[1]][date[0]] = {};
const day = obj[date[2]][date[1]][date[0]];
day.scheduledSlots = 0;
day.totalSlots = 0;
day.slots = null;
我只是想知道是否有更好的方法来解决这个问题
这是一个哈希映射。它需要再增加一天
{
"2018": {
"02": {
"18": {
"scheduledSlots": 0,
"totalSlots": 0,
"slots": null
}
}
"03": {
"12": {
"scheduledSlots": 0,
"totalSlots": 0,
"slots": null
}
}
}
}
如果一次创建整个对象,可能需要使用: 或者如果您以后需要访问
施工日
:
const day = {
scheduledSlots: 0,
totalSlots: 0,
slots: null
}
const obj = {
[date[2]]: {
[date[1]]: {
[date[0]]: day
}
}
}
@如果需要迭代,请编辑,这样可以完成以下工作:
Object.prototype._next = function(name)
{
if(!this[name]) this[name] = {};
return this[name];
}
const obj = {}
const day = obj._next(date[2])._next(date[1])._next(date[0]) = {
scheduledSlots: 0,
totalSlots: 0,
slots: null
}
如果一次创建整个对象,可能需要使用: 或者如果您以后需要访问
施工日
:
const day = {
scheduledSlots: 0,
totalSlots: 0,
slots: null
}
const obj = {
[date[2]]: {
[date[1]]: {
[date[0]]: day
}
}
}
@如果需要迭代,请编辑,这样可以完成以下工作:
Object.prototype._next = function(name)
{
if(!this[name]) this[name] = {};
return this[name];
}
const obj = {}
const day = obj._next(date[2])._next(date[1])._next(date[0]) = {
scheduledSlots: 0,
totalSlots: 0,
slots: null
}
您可以通过提供值属性的路径来使用组合方法
函数设置值(对象、路径、值){
var last=path.pop();
reduce((o,k)=>o[k]=o[k]| |{},object)[last]=value;
}
变量对象={},
日期='2018年2月18日'。拆分('-')。反向();
setValue(对象,[…日期,'scheduledlots'],0);
setValue(对象,[…日期,'totalSlots'],0);
setValue(对象,[…日期,'插槽'],null);
console.log(对象)代码>
.as console wrapper{max height:100%!important;top:0;}
您可以通过提供值属性的路径来使用组合方法
函数设置值(对象、路径、值){
var last=path.pop();
reduce((o,k)=>o[k]=o[k]| |{},object)[last]=value;
}
变量对象={},
日期='2018年2月18日'。拆分('-')。反向();
setValue(对象,[…日期,'scheduledlots'],0);
setValue(对象,[…日期,'totalSlots'],0);
setValue(对象,[…日期,'插槽'],null);
console.log(对象)代码>
.as console wrapper{max height:100%!important;top:0;}
您为什么要使用如此复杂的数据结构?@RomeoSierra这是用于填充calendar@boyman这是如何减少代码线的呢?拥有“2018:02:18”这样的键更好,不是吗?我的意思是,想象一下你正在遍历这个数据结构!我明白你的意思了。我看到的问题是,你们把这件事搞得太复杂了。将“2018:02:18”
的键解码为您想要的任何内容,在编程上要比尝试遍历如此复杂的结构简单得多。你可以用一个更平坦的数据结构来实现你的目标。你为什么会有这么复杂的数据结构?@RomeoSierra这是一个填充数据结构的哈希图calendar@boyman这是如何减少代码线的呢?拥有“2018:02:18”这样的键更好,不是吗?我的意思是,想象一下你正在遍历这个数据结构!我明白你的意思了。我看到的问题是,你们把这件事搞得太复杂了。将“2018:02:18”
的键解码为您想要的任何内容,在编程上要比尝试遍历如此复杂的结构简单得多。您可以使用更平坦的数据结构来实现目标。当我必须向哈希映射添加新日期时,这将不起作用,上一个状态将为overwritten@ShubhamBhardwaj完全忘记了。编辑我的回答当我必须向哈希映射添加新日期时,这将不起作用,上一个状态将为overwritten@ShubhamBhardwaj完全忘记了。编辑了我的答案