js 实现端口列表话
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script>
function compareTwo(jsonDate,key,listValue){
var arrPorts = listValue.split('/');
var prevValue = jsonDate.date.split('/');
var prevFirst = prevValue[0].substring(0,prevValue[0].length-1);
var arrPortsFirst = arrPorts[0].substring(0,arrPorts[0].length-1);
if(parseInt(key) == parseInt(jsonDate.index)+1 && prevFirst == arrPortsFirst && prevValue[1] == arrPorts[1] ){
return true;
}
return false;
} function jsonLength(ports){
var length = 0;
for(var key in ports){
length++;
}
return length;
} /*获取字符串*/
function getPortStr(portList){
var prevDate = {index: '',date:''};
var length = 0;
var equTmpStr = '';
var tmpStr = '';
var tmpLength = '';
var preStatus = false;
var length = jsonLength(portList);
alert("length:"+length);
var ingStr = '';
for(var key in portList){
tmpLength++;
var arrPorts = portList[key].split('/');
if('' != prevDate.index){
var comValue = compareTwo(prevDate,key,portList[key]);
if(comValue){ //如果两个数是同类型的
//把现在的连接上以前用-
equTmpStr = prevDate.date+'-'+arrPorts[2];
if(length == tmpLength){
ingStr += equTmpStr+',';
equTmpStr = '';
}
prevDate.index = key;
continue;
}else{
//如果是不同类型的,需要先存起来 alert("key:"+key+" comValue:"+comValue+" equTmpStr: "+equTmpStr);
if('' != equTmpStr){
ingStr += equTmpStr+',';
equTmpStr = '';
}else{
ingStr += prevDate.date+',';
} if(length == tmpLength){
ingStr += portList[key]+',';
}
}
}
prevDate.index = key;
prevDate.date = portList[key];
}
ingStr = ingStr.substring(0,ingStr.length-1);
return ingStr;
} /*整理字符串和命令行显示一致*/
function getStrCollation(portList){
var strPort = getPortStr(portList);
alert("strPort:"+strPort);
var arrPort = strPort.split(',');
var arrTmp = [];
var prevStrPortPartFirst = '';
var prevStrPort = '';
var exportStr = '';
var j=0;
for(var i=0;i<arrPort.length;i++){
var arrPortPart = arrPort[i].split('/');
var strPortPartFirst = arrPortPart[0].substring(0,arrPortPart[0].length-1);
if(i){
if(prevStrPortPartFirst == strPortPartFirst){
arrTmp[j] = arrPort[i].substring(strPortPartFirst.length);
j++;
if(i == arrPort.length-1){
exportStr += arrTmp.join(',');
}
continue;
}else{
if(arrTmp.length){
exportStr += arrTmp.join(',')+' ';
arrTmp = [];
j = 0;
}
if(i == arrPort.length-1){
exportStr += arrPort[i];
}
} }
arrTmp.push(arrPort[i]);
j++;
prevStrPortPartFirst = strPortPartFirst;
}
return exportStr;
} /*使用这个函数的前提是json中的数据按照从小到大的顺序排好*/
function compareList(listSrc,listDes){
var srcLength = jsonLength(listSrc);
var desLength = jsonLength(listDes); if(srcLength != desLength){
return false;
}else{
for(var key in listSrc){
if(listSrc[key] != listDes[key]){
return false;
}
}
}
return true; } window.onload = function(){
var portList = {'1': 'gigaethernet1/1/1','2':'gigaethernet1/2/7','3':'gigaethernet1/2/3','7':'fst1/5/1','8':'fst1/5/2','10':'fst1/6/2','11':'fst1/6/3','12':'fst1/6/4','16':'fst1/9/4','18':'fst1/10/4'};
var portListTset = {'1': 'gigaethernet1/1/1','2':'gigaethernet3/1/7','3':'gigaethernet3/1/3','7':'fst1/5/1','8':'fst1/5/2'};
var arrPort = ['gigaethernet1/1/1','gigaethernet1/1/2'];
var str = 'abcdefg';
//alert(str.substring(2));
alert(getStrCollation(portList));
}; </script>
</head> <body>
</body>
</html>
js 实现端口列表话的更多相关文章
- TCP/UDP端口列表
http://zh.wikipedia.org/wiki/TCP/UDP%E7%AB%AF%E5%8F%A3%E5%88%97%E8%A1%A8 TCP/UDP端口列表 本条目可通过翻译外语维 ...
- 原生js移动端列表无缝间歇向上滚动
在项目开发中尤其是在项目的活动页面的开发中,经常需要将用户的购买信息或中奖信息等以列表的形式展示在页面当中,并可以使其自动间歇向上滚动来达到在有限的区域内展示所有信息的目的.通常的做法是通过将列表父元 ...
- Linux中检查本地系统上的开放端口列表的方法
在 Linux 中很少有用于此目的的实用程序.然而,我提供了四个最重要的 Linux 命令来检查这一点. 你可以使用以下四个命令来完成这个工作.这些命令是非常出名的并被 Linux 管理员广泛使用.n ...
- 浅谈如何检查Linux中开放端口列表
给大家分享一篇关于如何检查Linux中的开放端口列表的详细介绍,首先如果你想检查远程Linux系统上的端口是否打开请点击链接浏览.如果你想检查多个远程Linux系统上的端口是否打开请点击链接浏览.如果 ...
- TCP/UDP 常用端口列表
计算机之间依照互联网传输层TCP/IP协议不同的协议通信,都有不同的对应端口.所以,利用短信(datagram)的UDP,所采用的端口号码不一定和采用TCP的端口号码一样.以下为两种通信协议的端口列表 ...
- TCP/UDP端口列表(WIKIpedia)
计算机之间依照互联网传输层TCP/IP协议不同的协议通信,都有不同的对应端口.所以,利用短信(datagram)的UDP,所采用的端口号码不一定和采用TCP的端口号码一样.以下为两种通信协议的端口列表 ...
- 通过ribbon 根据服务名获取所有服务实例的IP和端口列表
代码使用SpringCloud版本E3 业务场景: 今天遇到一个业务场景,要求根据服务名获取当前微服务集群中所有的对应服务实例的IP和端口,通过分析源码推算出了写法. 原理简述: 如果代码中引入了sp ...
- 分享JQuery动画插件Velocity.js的六种列表加载特效
分享JQuery动画插件Velocity.js的六种列表加载特效.在这款实例中给中六种不同的列表加载效果.分别为从上飞入.从右侧飞入.从左侧飞入.和渐显.一起看下效果图: 在线预览 源码下载 实现 ...
- js 验证ip列表
如题. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title ...
随机推荐
- [LC] 224. Basic Calculator
Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...
- Mac系统常用软件
1.往移动硬盘中拷贝东西.创建文件夹: Mounty 2.解压缩软件(rar): the unarchiver 3.类似Xshell软件: FinalShell(国产) 输入以下命令: curl -o ...
- SQL提高性能
1.对外键建立索引,大数据量时性能提高明显(建索引可以直接[Merge Join],否则还须在查询时生成HASH表作[Hash Join]) 2.尽量少使用inner join,使用left join ...
- 接口测试-chap2-关于重定向
重定向: 301:资源永久转移 302:资源暂时转移到另一个地址了 1.如果请求接口时发生了重定向,python会自动跟随重定向,对重定向地址发起请求,最后只能得到重定向地址的响应结果.而看不到重定向 ...
- vue-cli 项目结构介绍
感谢:https://www.jianshu.com/p/7006a663fb9f 总体框架 一个vue-cli的项目结构如下,其中src文件夹是需要掌握的,所以本文也重点讲解其中的文件,至于其他相关 ...
- SpringSecurity 如何提示错误
1.可以通过authentication-failure-url="/login.html?error=1" 前端接收参数,根据参数提示 错误 2.前端vue this.myNam ...
- 解决跨域问题(CORS)
一.改变响应头部 请求代码如下: fetch("http://localhost:8888/young",{ method:"get" }).then(func ...
- 教你win7关闭开机动画,大幅度加快开机时间
Win7系统如何关闭开机动画 Win7系统开机动画关闭教程,以前我们说过很多种帮助Win7开机加速的方法,比如减少Win7开机启动的程序.服务或计划任务等.不过这些都优化都是针对已经进入Win7系统后 ...
- Pwnable.tw start
Let's start the CTF:和stdin输入的字符串在同一个栈上,再准确点说是他们在栈上同一个地址上,gdb调试看得更清楚: 调试了就很容易看出来在堆栈上是同一块地址.发生栈溢出是因为:r ...
- MySQL 的 RowNum 实现(排行榜计算用户排名)
1. 计算用户排名最高效的方法 例如:通过用户分享个数排名,那么自己的排名就是:比自己分享数多的用户个数 + 1 ' and `count` > '自己分享个数' 缺点:当多个用户分享个数相同的 ...