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