<!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 实现端口列表话的更多相关文章

  1. TCP/UDP端口列表

    http://zh.wikipedia.org/wiki/TCP/UDP%E7%AB%AF%E5%8F%A3%E5%88%97%E8%A1%A8 TCP/UDP端口列表     本条目可通过翻译外语维 ...

  2. 原生js移动端列表无缝间歇向上滚动

    在项目开发中尤其是在项目的活动页面的开发中,经常需要将用户的购买信息或中奖信息等以列表的形式展示在页面当中,并可以使其自动间歇向上滚动来达到在有限的区域内展示所有信息的目的.通常的做法是通过将列表父元 ...

  3. Linux中检查本地系统上的开放端口列表的方法

    在 Linux 中很少有用于此目的的实用程序.然而,我提供了四个最重要的 Linux 命令来检查这一点. 你可以使用以下四个命令来完成这个工作.这些命令是非常出名的并被 Linux 管理员广泛使用.n ...

  4. 浅谈如何检查Linux中开放端口列表

    给大家分享一篇关于如何检查Linux中的开放端口列表的详细介绍,首先如果你想检查远程Linux系统上的端口是否打开请点击链接浏览.如果你想检查多个远程Linux系统上的端口是否打开请点击链接浏览.如果 ...

  5. TCP/UDP 常用端口列表

    计算机之间依照互联网传输层TCP/IP协议不同的协议通信,都有不同的对应端口.所以,利用短信(datagram)的UDP,所采用的端口号码不一定和采用TCP的端口号码一样.以下为两种通信协议的端口列表 ...

  6. TCP/UDP端口列表(WIKIpedia)

    计算机之间依照互联网传输层TCP/IP协议不同的协议通信,都有不同的对应端口.所以,利用短信(datagram)的UDP,所采用的端口号码不一定和采用TCP的端口号码一样.以下为两种通信协议的端口列表 ...

  7. 通过ribbon 根据服务名获取所有服务实例的IP和端口列表

    代码使用SpringCloud版本E3 业务场景: 今天遇到一个业务场景,要求根据服务名获取当前微服务集群中所有的对应服务实例的IP和端口,通过分析源码推算出了写法. 原理简述: 如果代码中引入了sp ...

  8. 分享JQuery动画插件Velocity.js的六种列表加载特效

    分享JQuery动画插件Velocity.js的六种列表加载特效.在这款实例中给中六种不同的列表加载效果.分别为从上飞入.从右侧飞入.从左侧飞入.和渐显.一起看下效果图: 在线预览   源码下载 实现 ...

  9. js 验证ip列表

    如题. <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title ...

随机推荐

  1. svn使用2(转)

    首先打开VisualSVN Server Manager,如图: 可以在窗口的右边看到版本库的一些信息,比如状态,日志,用户认证,版本库等.要建立版本库,需要右键单击左边窗口的Repositores, ...

  2. [LC] 122. Best Time to Buy and Sell Stock II

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  3. redis下载安装及php配置redis

    下载及安装redis 1.首先去github网站上下载https://github.com/dmajkic/redis/downloads: 2.根据实际情况,将64bit的内容cp到自定义盘符目录, ...

  4. Adam项目展示微软研究院人工智能领域新突破

    编者按:在美国时间7月14日举行的2014年微软教育峰会上,Adam项目面对牵上台的3只小狗,一一准确地报出了它们的品种.Adam项目代表了微软研究院在机器学习和人工智能领域的前沿进展.它可不仅仅认得 ...

  5. python开发之Pandas

    正确的对DataFrame reverse运算 data.reindex(index=data.index[::-]) or simply: data.iloc[::-] will reverse y ...

  6. 概念--Maven仓库

    转:Maven:mirror和repository 区别 Tip: 默认中央仓库的地址:https://repo.maven.apache.org/maven2 1.Maven仓库主要有2种 remo ...

  7. ES6的模块暴露与模块引入

    ES6的模块暴露和引入可以让我们实现模块化编程,以下列出ES6的几种模块暴露与引入的方式与区别. 1.ES6一共有三种模块暴露方法 多行暴露 模块1:module1.js //多行暴露 export ...

  8. 利用Load命令将本地文本里面的数据导入到MySQL数据库

    摘要:在使用MySQL是我们可能会遇到要向我们的表中插入大量的数据如果都使用以下的语句在命令行输入有点不太切实际,幸好MySQL为我们提供了LOAD命令可以批量的从本地文件向MySQL表中导入数据! ...

  9. js 实现排序算法 -- 希尔排序(Shell Sort)

    原文: 十大经典排序算法(动图演示) 希尔排序 1959年Shell发明,第一个突破O(n2)的排序算法,是简单插入排序的改进版.它与插入排序的不同之处在于,它会优先比较距离较远的元素.希尔排序又叫缩 ...

  10. 跟随大神实现简单的Vue框架

    自己用vue也不久了,学习之初就看过vue实现的原理,当时看也是迷迷糊糊,能说出来最基本的,但是感觉还是理解的不深入,最近找到了之前收藏的文章,跟着大神一步步敲了一下简易的实现,算是又加深了理解. 原 ...