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 ...
随机推荐
- 通过命令行创建Django项目
只有安装的是pycharm专业版才可以直接在pycharm面板中直接创建Django项目 如果不是专业版,可以通过命令行创建Django项目 https://www.cnblogs.com/jiare ...
- php 依赖注入 和 控制反转 php设计模式
https://blog.csdn.net/zyddj123/article/details/82753650 什么是依赖注入?IOC:英文全称:Inversion of Control,中文名称:控 ...
- Caused by: com.alibaba.fastjson.JSONException: syntax error, expect {, actual [, pos 0, fastjson-version 1.2
环境: vue.js 问题: 当添加评论时 重新查询数据刷新数据控制台异常Caused by: com.alibaba.fastjson.JSONException: syntax error, ex ...
- Web窗体--控件
服务器基本控件:button: text属性linkbutton:text属性,它是一个超链接模样的普通buttonhyperlink: navigateurl:链接地址,相当于<a>标签 ...
- EROS安装(windows)
版本查看 基础环境安装 npm i eros-cli -g
- 解决android 无法打开 DDMS 中的data目录
把上面操作一遍就可以了,如果还是不行你可以检查下 su 是不是输入错误了.
- QQ公众号出炉 同门相争意欲何为
同门相争意欲何为"> 当初腾讯大张旗鼓地推出微信时,很多业内人士都认为其与QQ在功能.用户等方面多有重叠,肯定会阻碍QQ的发展和微信的成长.没想到,二者避重就轻地在不同的侧重点发展,反 ...
- 常用JS代码片段
1.隐藏部分数字,如手机号码,身份证号码 1 2 3 function (str,start,length,mask_char){ return str.replace(str.substr(star ...
- LoraLU
一.定义动画过程中形成的状态用transform transform 分为2D 和 3D,主要包含以下几种变换:旋转rotate.扭曲skew.缩放scale和移动 translate以及矩阵变形ma ...
- 公司更需要会哪种语言的工程师?IEEE Spectrum榜单发布
IEEE Spectrum 杂志发布了一年一度的编程语言排行榜,这也是他们发布的第四届编程语言 Top 榜. 据介绍,IEEE Spectrum 的排序是来自 10 个重要线上数据源的综合,例如 St ...