Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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_Jquery_Json - Fatal编程技术网

Javascript 循环使用JSON&;比较时间

Javascript 循环使用JSON&;比较时间,javascript,jquery,json,Javascript,Jquery,Json,我试图完成的是循环使用这个JSON,并比较“开始时间”和“结束时间”,以确保时间不重叠。我在实现这一点上遇到了困难 我发现了这一点:但这些都没有任何意义,也没有使用JSON,但这是我发现的最接近的。我可以用jQuery来做这个吗 { "Line_1":{ "artist":"Audien", "day":"1", "start_ti

我试图完成的是循环使用这个JSON,并比较“开始时间”和“结束时间”,以确保时间不重叠。我在实现这一点上遇到了困难

我发现了这一点:但这些都没有任何意义,也没有使用JSON,但这是我发现的最接近的。我可以用jQuery来做这个吗

{
    "Line_1":{
        "artist":"Audien",
        "day":"1",
        "start_time":"13:00",
        "end_time":"14:00",
        "stage":"main"
    },
    "Line_2":{
        "artist":"Slushii",
        "day":"1",
        "start_time":"13:30",
        "end_time":"14:30",
        "stage":"eclipse"
    },
    "Line_3":{
        "artist":"DJ Snake",
        "day":"1",
        "start_time":"15:00",
        "end_time":"16:00",
        "stage":"main"
    },
    "Line_4":{
        "artist":"Marshmello",
        "day":"2",
        "start_time":"14:15",
        "end_time":"15:15",
        "stage":"horizon"
    }
}
预期产出:

奥黛安和斯鲁西冲突

DJ Snake不会与任何人发生冲突

马什梅洛不会与任何人发生冲突

*注意第1天和第2天我的解决方案:

var json={
“第1行”:{
“艺术家”:“奥黛安”,
“日”:“1”,
“开始时间”:“13:00”,
“结束时间”:“14:00”,
“阶段”:“主要”
},
“第2行”:{
“艺术家”:“Slushii”,
“天”:“1”,“开始时间”:“13:30”,
“结束时间”:“14:30”,
“阶段”:“日食”
},
“第3行”:{
“艺术家”:“DJ蛇”,
“日”:“1”,
“开始时间”:“15:00”,
“结束时间”:“16:00”,
“阶段”:“主要”
},
“第4行”:{
“艺术家”:“马什梅洛”,
“日”:“2”,
“开始时间”:“17:15”,
“结束时间”:“15:15”,
“舞台”:“地平线”
}
};
函数timeToDate(timeStr){
var whateverDate='01/01/1980';
返回日期.parse(whateverDate+timeStr);
}
for(json中的项){
var st=json[item]。开始时间;
var et=json[item]。结束时间;
var datescorect=(timeToDate(st)我的解决方案:

var json={
“第1行”:{
“艺术家”:“奥黛安”,
“日”:“1”,
“开始时间”:“13:00”,
“结束时间”:“14:00”,
“阶段”:“主要”
},
“第2行”:{
“艺术家”:“Slushii”,
“天”:“1”,“开始时间”:“13:30”,
“结束时间”:“14:30”,
“阶段”:“日食”
},
“第3行”:{
“艺术家”:“DJ蛇”,
“日”:“1”,
“开始时间”:“15:00”,
“结束时间”:“16:00”,
“阶段”:“主要”
},
“第4行”:{
“艺术家”:“马什梅洛”,
“日”:“2”,
“开始时间”:“17:15”,
“结束时间”:“15:15”,
“舞台”:“地平线”
}
};
函数timeToDate(timeStr){
var whateverDate='01/01/1980';
返回日期.parse(whateverDate+timeStr);
}
for(json中的项){
var st=json[item]。开始时间;
var et=json[item]。结束时间;
var datescorect=(timeToDate(st)};为了便于学习,这里有一个相当详细的原型。它使用和

演示:

原型代码的HTML:

<ul id="output"></ul>
JS用于prototye代码

var data = {
        "Line_1":{
            "artist":"Audien",
            "day":"1",
            "start_time":"13:00",
            "end_time":"14:00",
            "stage":"main"
        },
        "Line_2":{
            "artist":"Slushii",
            "day":"1",
            "start_time":"13:30",
            "end_time":"14:30",
            "stage":"eclipse"
        },
        "Line_3":{
            "artist":"DJ Snake",
            "day":"1",
            "start_time":"15:00",
            "end_time":"16:00",
            "stage":"main"
        },
        "Line_4":{
            "artist":"Marshmello",
            "day":"2",
            "start_time":"14:15",
            "end_time":"15:15",
            "stage":"horizon"
        }
    },
    tmp_day = '2000-01-01',
    outer_key,
    outer,
    inner_key,
    inner,
    tmp_range,
    checked = {},
    conflict_found = {},
    conflicts = [],
    i;

for (outer_key in data) {
    if (Object.prototype.hasOwnProperty.call(data, outer_key)) {
        outer = data[outer_key];

        tmp_range = moment(tmp_day + 'T' + outer.start_time).twix(tmp_day + 'T' + outer.end_time);

        checked[outer_key] = true;

        for (inner_key in data) {
            if (Object.prototype.hasOwnProperty.call(data, inner_key) &&
                outer_key !== inner_key &&
                !checked[inner_key]
            ) {
                inner = data[inner_key];

                if (outer.day === inner.day &&
                    (
                        tmp_range.contains(tmp_day + 'T' + inner.start_time) ||
                        tmp_range.contains(tmp_day + 'T' + inner.end_time)
                    )
                ) {
                    conflict_found[outer_key] = true;
                    conflict_found[inner_key] = true;

                    conflicts.push([
                        outer_key,
                        inner_key
                    ]);
                }
            }
        }
    }
}

// Output:
document.getElementById('output').innerHTML = '';

for (i = 0; i < conflicts.length; i++) {
    document.getElementById('output').innerHTML += '<li><strong>' + data[conflicts[i][0]].artist + '</strong> conflicts with <strong>' + data[conflicts[i][1]].artist + '</strong></li>';
}

for (outer_key in data) {
    if (Object.prototype.hasOwnProperty.call(data, outer_key) &&
        !conflict_found[outer_key]
    ) {
        document.getElementById('output').innerHTML += '<li><strong>' + data[outer_key].artist + '</strong> does not conflict with anyone</li>';
    }
}
var数据={
“第1行”:{
“艺术家”:“奥黛安”,
“日”:“1”,
“开始时间”:“13:00”,
“结束时间”:“14:00”,
“阶段”:“主要”
},
“第2行”:{
“艺术家”:“Slushii”,
“日”:“1”,
“开始时间”:“13:30”,
“结束时间”:“14:30”,
“阶段”:“日食”
},
“第3行”:{
“艺术家”:“DJ蛇”,
“日”:“1”,
“开始时间”:“15:00”,
“结束时间”:“16:00”,
“阶段”:“主要”
},
“第4行”:{
“艺术家”:“马什梅洛”,
“日”:“2”,
“开始时间”:“14:15”,
“结束时间”:“15:15”,
“舞台”:“地平线”
}
},
tmp_日='2000-01-01',
外键,
外面的
内键,
内部的
tmp_范围,
选中={},
已找到冲突={},
冲突=[],
我
用于(外部输入数据){
if(Object.prototype.hasOwnProperty.call(数据,外键)){
外部=数据[外部_键];
tmp_范围=时刻(tmp_日+T'+外部开始时间)。twix(tmp_日+T'+外部结束时间);
选中[外_键]=真;
用于(内部_键入数据){
if(Object.prototype.hasOwnProperty.call)(数据,内部_键)&&
外部_键!==内部_键&&
!已选中[内键]
) {
内部=数据[内部_键];
如果(外部日期===内部日期&&
(
tmp_range.contains(tmp_day+'T'+内部开始时间)||
tmp_range.contains(tmp_day+'T'+内部.end_time)
)
) {
发现冲突[outer\u key]=true;
发现冲突[内部密钥]=真;
推([
外键,
内键
]);
}
}
}
}
}
//输出:
document.getElementById('output')。innerHTML='';
对于(i=0;i<0.length;i++){
document.getElementById('output')。innerHTML+='
  • '+数据[冲突[i][0]]。artist+''+数据[冲突[i][1]]冲突。artist+'
  • ; } 用于(外部输入数据){ if(Object.prototype.hasOwnProperty.call)(数据,外部_键)&& !已找到冲突[outer\u key] ) { document.getElementById('output')。innerHTML+='
  • '+数据[外键].artist+'与任何人都不冲突; } }
  • 这是一个非常详细的原型,供您学习之用。它使用和

    演示:

    原型代码的HTML:

    <ul id="output"></ul>
    
    JS用于prototye代码

    var data = {
            "Line_1":{
                "artist":"Audien",
                "day":"1",
                "start_time":"13:00",
                "end_time":"14:00",
                "stage":"main"
            },
            "Line_2":{
                "artist":"Slushii",
                "day":"1",
                "start_time":"13:30",
                "end_time":"14:30",
                "stage":"eclipse"
            },
            "Line_3":{
                "artist":"DJ Snake",
                "day":"1",
                "start_time":"15:00",
                "end_time":"16:00",
                "stage":"main"
            },
            "Line_4":{
                "artist":"Marshmello",
                "day":"2",
                "start_time":"14:15",
                "end_time":"15:15",
                "stage":"horizon"
            }
        },
        tmp_day = '2000-01-01',
        outer_key,
        outer,
        inner_key,
        inner,
        tmp_range,
        checked = {},
        conflict_found = {},
        conflicts = [],
        i;
    
    for (outer_key in data) {
        if (Object.prototype.hasOwnProperty.call(data, outer_key)) {
            outer = data[outer_key];
    
            tmp_range = moment(tmp_day + 'T' + outer.start_time).twix(tmp_day + 'T' + outer.end_time);
    
            checked[outer_key] = true;
    
            for (inner_key in data) {
                if (Object.prototype.hasOwnProperty.call(data, inner_key) &&
                    outer_key !== inner_key &&
                    !checked[inner_key]
                ) {
                    inner = data[inner_key];
    
                    if (outer.day === inner.day &&
                        (
                            tmp_range.contains(tmp_day + 'T' + inner.start_time) ||
                            tmp_range.contains(tmp_day + 'T' + inner.end_time)
                        )
                    ) {
                        conflict_found[outer_key] = true;
                        conflict_found[inner_key] = true;
    
                        conflicts.push([
                            outer_key,
                            inner_key
                        ]);
                    }
                }
            }
        }
    }
    
    // Output:
    document.getElementById('output').innerHTML = '';
    
    for (i = 0; i < conflicts.length; i++) {
        document.getElementById('output').innerHTML += '<li><strong>' + data[conflicts[i][0]].artist + '</strong> conflicts with <strong>' + data[conflicts[i][1]].artist + '</strong></li>';
    }
    
    for (outer_key in data) {
        if (Object.prototype.hasOwnProperty.call(data, outer_key) &&
            !conflict_found[outer_key]
        ) {
            document.getElementById('output').innerHTML += '<li><strong>' + data[outer_key].artist + '</strong> does not conflict with anyone</li>';
        }
    }
    
    var数据={
    “第1行”:{
    “艺术家”:“奥黛安”,
    “日”:“1”,
    “开始时间”:“13:00”,
    “结束时间”:“14:00”,
    “阶段”:“主要”
    },
    “第2行”:{
    “艺术家”:“Slushii”,
    “日”:“1”,
    “开始时间”:“13:30”,
    “结束时间”:“14:30”,
    “阶段”:“日食”
    },
    “第3行”:{
    “艺术家”:“DJ蛇”,
    “日”:“1”,
    “开始时间”:“15:00”,
    “结束时间”:“16:00”,
    “阶段”:“主要”
    },
    “第4行”:{
    “艺术家”:“马尔