js区间算法

sx2asdf31415 2017-05-09 10:13:50
var obj = [{ ms: "8:00", me: "9:00" }, { ms: "10:00", me: "15:00" }, { ms: "10:30", me: "16:00" }, { ms: "11:30", me: "14:00" }, { ms: "15:30", me: "16:30" }, { ms: "17:30", me: "19:00" }]

var obj1=[{ ms: "8:00", me: "11:00" }, { ms: "10:00", me: "15:00" },{ ms: "12:00", me: "15:00" }]

var obj2=[{ ms: "8:00", me: "10:00" }, { ms: "9:00", me: "11:00" },{ ms: "10:00", me: "12:00" },{ ms: "11:00", me: "13:00" },{ ms: "12:00", me: "14:00" }];

var obj3=[{ ms: "8:00", me: "10:00" }, { ms: "9:00", me: "11:00" },{ ms: "12:00", me: "14:00" },{ ms: "15:00", me: "16:00" },{ ms: "17:00", me: "19:00" },{ ms: "18:00", me: "20:00" }]

这样四组数据要一个方法
function getArr(arr){ return ???}
时间重合的对应的有几个分别是那几个

返回这样的数组,怎么做,求大神结局给思路
//[1,4,4,4,41]
//[3,3,3]
//[5,5,5,5,5]
//[2,2,1,1,2,2]
...全文
417 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cn00439805 2017-05-09
  • 打赏
  • 举报
回复
按你需求的描述,就应该是这个结果,而非你描述的结果
cn00439805 2017-05-09
  • 打赏
  • 举报
回复
你的运算是错误的
sx2asdf31415 2017-05-09
  • 打赏
  • 举报
回复

1楼 首先谢谢你谢了这么多
你代码我运行出来的结果如图
和我期待的结果数组不同
//[1,4,4,4,4,1]
//[3,3,3]
//[5,5,5,5,5]
//[2,2,1,1,2,2]
qq_36832844 2017-05-09
  • 打赏
  • 举报
回复
public class Test { public static void main(String[] args) { int[] nums={1,5,7,8,56,487,874,414,5}; Sorts(nums); } public static void Sorts(int[] nums){ int a; for(int i=0;i<nums.length;i++){ for(int j=0;j<nums.length;j++){ if(nums[j]<nums[i]){ a=nums[i]; nums[i]=nums[j]; nums[j]=a; } } } for(int b:nums){ System.out.print(b+","); } } }
cn00439805 2017-05-09
  • 打赏
  • 举报
回复

var obj = [{ ms: "8:00", me: "9:00" }, { ms: "10:00", me: "15:00" }, { ms: "10:30", me: "16:00" }, { ms: "11:30", me: "14:00" }, { ms: "15:30", me: "16:30" }, { ms: "17:30", me: "19:00" }];
var obj1=[{ ms: "8:00", me: "11:00" }, { ms: "10:00", me: "15:00" },{ ms: "12:00", me: "15:00" }]
var obj2=[{ ms: "8:00", me: "10:00" }, { ms: "9:00", me: "11:00" },{ ms: "10:00", me: "12:00" },{ ms: "11:00", me: "13:00" },{ ms: "12:00", me: "14:00" }];
var obj3=[{ ms: "8:00", me: "10:00" }, { ms: "9:00", me: "11:00" },{ ms: "12:00", me: "14:00" },{ ms: "15:00", me: "16:00" },{ ms: "17:00", me: "19:00" },{ ms: "18:00", me: "20:00" }]
function getArr(arr){
	var result = [],copy;
	for(var i = 0,o;o = arr[i];i++){
		copy = arr.concat([]);
		copy.splice(i,1);
		result.push(getNum(o,copy));
	}
	return result;
}
function getNum(obj,arr){
	var n = 1;
	for(var i = 0,o;o = arr[i];i++){
		if(isCross(obj,o)){
			n++;
		}
	}
	return n;
}
function isCross(o1,o2){
	var ms1 = trans(o1.ms), me1 = trans(o1.me), ms2 = trans(o2.ms), me2 = trans(o2.me);
	if(me1 < ms2 || ms1 > me2){
		return false;
	}
	return true;
}
function trans(str){
	var arr = str.split(":");
	return parseInt(arr[0]) + parseFloat(arr[1]/60);
}
console.log(getArr(obj),getArr(obj1),getArr(obj2),getArr(obj3));
sx2asdf31415 2017-05-09
  • 打赏
  • 举报
回复
图上的例子是有五个会议 因为第一个会议和其他四个会议时间都没有重合,所以第一个会议占满格; 第二,三,四个会议时间有重合,所以二,三,四,各占满格的三分之一; 第五个会议和他们前四个会议也没有重合,所以第五个会议也占满格; 这样下来返回的 arr=[1,3,3,3,1] 看规律 第一个占满格,所以是arr[0]是1 二,三,四占三分之一,所以arr[1],arr[2],arr[3]是3 第五个占满格。所以arr[4]是1 arr的length跟会议的数量肯定是一样的 不知道这样写能看明白不
cn00439805 2017-05-09
  • 打赏
  • 举报
回复
还是看不懂,
灿尔哈擦苏 2017-05-09
  • 打赏
  • 举报
回复
说的太含糊了
sx2asdf31415 2017-05-09
  • 打赏
  • 举报
回复
1楼

针对图片就是
第一个会议占一格(也就是满格)
第二个会议,三,四 占三分之一
第五个会议占满格
所以 要的数组就是
//arr=[1,3,3,3,1
]
cn00439805 2017-05-09
  • 打赏
  • 举报
回复
没看懂表述,能不能再说清楚点
sx2asdf31415 2017-05-09
  • 打赏
  • 举报
回复
function getNum(json){ var arr = [],arr1=[0],arr2=[]; var start1, end1, start2,end2; var cont=0;//重复的个数 var clone_arr=[]; var num=[]; var clone_index=[]; if (json.length === 1) { arr = [1]; }else{ for (var i = 0; i <json.length; i++) { if(i!==0){ if(i<=cont){ continue } } start1 = Number(json[i].ms.split(':').join('')); end1 = Number(json[i].me.split(':').join('')); num=[start1,end1]; for (var j = i+1; j < json.length; j++) { start2 = Number(json[j].ms.split(':').join('')); end2=Number(json[j].me.split(':').join('')); if ( start2 < num[1]) { if(end2>num[1]){ num[1]=end2; } cont=j } } clone_arr.push(num) } //console.log(clone_arr) if(clone_arr.length===1){ for(var x=0;x<json.length;x++){ arr[x]=json.length; } }else{ for(var y=0;y<clone_arr.length;y++){ var t=0; for(var z=0;z<json.length;z++){ start2 = Number(json[z].ms.split(':').join('')); end2=Number(json[z].me.split(':').join('')); if(clone_arr[y][0]<=start2&&clone_arr[y][1]>=end2){ t++ } } clone_index.push(t); } for(var a=0;a<clone_index.length;a++){ //var arr1=''; if(clone_index[a]!==1){ for(var b=0;b<clone_index[a];b++){ arr.push(clone_index[a]) } }else{ arr.push(1) } } } //console.log(clone_index); } var o=0; for(var p=1;p<arr.length;p++){ if(arr[p]===1){ arr1.push(0); o=0 }else if(arr[p]===arr[p-1]){ o++; arr1.push(o); }else{ arr1.push(0); o=0 } } console.log(arr1) arr2.push(arr,arr1); return arr2 }
sx2asdf31415 2017-05-09
  • 打赏
  • 举报
回复
function getNum(json){ var arr = [],arr1=[0],arr2=[]; var start1, end1, start2,end2; var cont=0;//重复的个数 var clone_arr=[]; var num=[]; var clone_index=[]; if (json.length === 1) { arr = [1]; }else{ for (var i = 0; i <json.length; i++) { if(i!==0){ if(i<=cont){ continue } } start1 = Number(json[i].ms.split(':').join('')); end1 = Number(json[i].me.split(':').join('')); num=[start1,end1]; for (var j = i+1; j < json.length; j++) { start2 = Number(json[j].ms.split(':').join('')); end2=Number(json[j].me.split(':').join('')); if ( start2 < num[1]) { if(end2>num[1]){ num[1]=end2; } cont=j } } clone_arr.push(num) } //console.log(clone_arr) if(clone_arr.length===1){ for(var x=0;x<json.length;x++){ arr[x]=json.length; } }else{ for(var y=0;y<clone_arr.length;y++){ var t=0; for(var z=0;z<json.length;z++){ start2 = Number(json[z].ms.split(':').join('')); end2=Number(json[z].me.split(':').join('')); if(clone_arr[y][0]<=start2&&clone_arr[y][1]>=end2){ t++ } } clone_index.push(t); } for(var a=0;a<clone_index.length;a++){ //var arr1=''; if(clone_index[a]!==1){ for(var b=0;b<clone_index[a];b++){ arr.push(clone_index[a]) } }else{ arr.push(1) } } } //console.log(clone_index); } var o=0; for(var p=1;p<arr.length;p++){ if(arr[p]===1){ arr1.push(0); o=0 }else if(arr[p]===arr[p-1]){ o++; arr1.push(o); }else{ arr1.push(0); o=0 } } console.log(arr1) arr2.push(arr,arr1); return arr2 } 我弄出来了 arr[0]就是要的数组, 希望有更好的算法可以发帖
内容概要:本文围绕基于改进灵敏度分析的有源配电网智能软开关优化配置展开研究,以IEEE33节点标准配电系统为仿真案例,提出了一种结合改进灵敏度指标的优化配置方法。该方法通过分析节点电压灵敏度、功率损耗灵敏度等关键电气特性,精准识别配电网中适合部署智能软开关的关键位置,并结合优化算法实现软开关的最优选址与定容。研究有效提升了配电网对分布式电源的接纳能力,改善了电压质量,降低了网络损耗,增强了系统的运行灵活性与经济性。Matlab代码实现部分提供了完整的仿真流程与算法验证,确保研究成果具备良好的可复现性与工程应用潜力。; 适合人群:具备电力系统分析基础,从事配电网优化、智能电网、分布式能源接入等相关领域的科研人员及研究生。; 使用场景及目标:① 掌握灵敏度分析在配电网规划中的实际应用;② 学习智能软开关(SOP)的优化配置模型与求解方法;③ 借助IEEE33节点系统开展相关课题仿真研究与论文复现;④ 提升Matlab在电力系统优化中的编程与建模能力。; 阅读建议:建议结合Matlab代码逐行理解算法实现过程,重点关注灵敏度指标的构建逻辑与优化模型的约束条件设定,同时可拓展至不同场景(如高渗透率光伏接入)进行对比分析,深化对智能软开关调控作用的理解。
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 文件名"耐克抢鞋监控1.27.5.rar"代表一种专门用于自动化监测与购买耐克品牌鞋品的计算机程序。该压缩文件标注的版本号1.27.5,表明该应用程序或许经历了反复的迭代与改进,以便应对持续演变的网络状况及购鞋需求。所提及的“自动执行购买流程、完成支付环节、未引发恶意软件警报、易于操作、附带使用说明”是此款程序的核心特性。自动化购买功能意指用户无需进行手动页面刷新或输入交易细节,软件将自动执行这些操作,从而增加抢购的达成率。未触发反病毒警报的声明表明该程序在运行时不会激活安全防护软件的警告,这可能是通过代码优化或采取安全策略达成的,尽管这并不完全排除潜在的安全隐患。易于操作特性意味着该软件对用户的技术水平要求不高,即使是计算机操作的初学者也能迅速掌握。附带使用指南则显示软件提供了详尽的操作手册,旨在帮助用户更有效地理解和使用该工具。所涉及的关键词进一步突出了软件的主要用途:耐克品牌、自动购买、支付处理及安全性能。这表明该程序是针对耐克产品的抢购而设计的,并且覆盖了从商品选择到最终支付的整个交易过程。在【压缩文件内包含的文件清单】中,仅列出了一个条目:“耐克抢鞋监控1.27.5”。这种情况通常暗示压缩文件内仅包含主要的应用程序文件,或许还附带有配置文件、说明文档、使用教程及其他辅助性文件。主程序文件可能是.exe或.jar格式,前者为适用于Windows系统的可执行文件,后者则可能是基于Java语言编写的跨平台应用程序。该软件的功能机制或许运用了网页数据获取技术,例如HTTP/HTTPS通信请求,并可能借助Web自动化工具(例如Selenium)来模拟用户行为,实现自动填写表单...

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧