Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 日历数据排序json树_Javascript_Php_Python_Recursion_Traversal - Fatal编程技术网

Javascript 日历数据排序json树

Javascript 日历数据排序json树,javascript,php,python,recursion,traversal,Javascript,Php,Python,Recursion,Traversal,我需要以下方面的帮助, 下面是一些json数据 [ { "id" : 1, "from" : 10, "to" : 11 }, { "id" : 2, "from" : 11, "to" : 12 }, { "id" : 3, "from" : 10.5, "to" : 11.5 }, { "id" : 4, "from" : 9, "to" : 9.5 } ]

我需要以下方面的帮助, 下面是一些json数据

[
{
    "id"   : 1,
    "from" : 10,
    "to"   : 11
},
{
    "id"   : 2,
    "from" : 11,
    "to"   : 12
},
{
    "id"   : 3,
    "from" : 10.5,
    "to"   : 11.5
},
{
    "id"   : 4,
    "from" : 9,
    "to"   : 9.5
}   
]
我正在准备这样的数据,我可以在屏幕上显示它,因此每个对象将包含两个附加属性,sum和col(column)。Sum是组成组的列(例如)的总和,col是对象所在的列。这是示例数据。因此,我正在寻找一种递归方法来遍历数据,以设置这两个附加属性。数据现在应该如下所示:

[
{
    "id"   : 1,
    "from" : 10,
    "to"   : 11,
    "sum"  : 2,
    "col"  : 1
},
{
    "id"   : 2,
    "from" : 11,
    "to"   : 12,
    "sum"  : 2,
    "col"  : 1
},
{
    "id"   : 3,
    "from" : 10.5,
    "to"   : 11.5,
    "sum"  : 2,
    "col"  : 2
},
{
    "id"   : 4,
    "from" : 9,
    "to"   : 9.5,
    "sum"  : 1,
    "col"  : 1
}   
]
因为项id:3from介于id:1和id:2from和to之间,请注意这三个项的sum属性是2,id:3的col是2。我想这是数据的一个简单版本。其他嵌套可能存在,例如,一个额外的对象和可以等于3,列可以等于3

我不确定这是什么样的数据结构?某种树。如何遍历这些项(考虑递归)并以最少的时间复杂性设置这些附加属性?也许我得先分类


任何指导或帮助都将不胜感激

需要为每个数组元素指定两个属性。
pos
是列表表单中的计划列。当有两个或多个重叠的约会时,位置1表示第一次约会,位置2表示第二次约会,依此类推

          pos = 1                           pos = 2
---------------------------     -------------------------------
{ id: 1, from: 10, to: 11 }     { id: 3, from: 10.5, to: 11.5 }
{ id: 2, from: 11, to: 12 }
{ id: 4, from: 12, to: 13 }
据我所知,
总和是同时预约的次数

对于第一部分,解决方案使用辅助变量
schedule
。此变量模拟带有约会的表。在每个数组中,所有约会都不重叠。数组大小对应于所需的
pos

第二部分计算
总和
,这是一个指标,指示可能同时发生的约会数量。这里使用最大计数

该算法需要排序的数据

结果中的第一个数组是调度。 第二个是原始数组,排序后附加所需的属性
pos
sum

var数据=[
{id:1,from:10,to:11},
{id:3,from:10.5,to:11.5},
{id:2,from:11,to:12},
{id:4,from:12,to:13},
],
附表=[];
sort(函数(a,b){返回a.from-b.from | | a.to-b.to;});
data.forEach(函数(a,i){
附表.部分(功能(b、j){

如果(b.length&&b[b.length-1].to,但这不是JSON:-?@lvaroGonzález这看起来不像JSON?可能缺少一些引号?因此此数组中的每个对象都定义了一个范围(.from->.to),你想计算每个范围与其他范围重叠的次数吗?我一点也不明白。请更详细地解释和和位置代表什么。中间和,中间位置,以及我如何计算它们?@RonBuenavida例如。数据格式通常不允许解释(可能CSV除外)。如果您发布的是伪代码,您应该对此进行解释。