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 ...
随机推荐
- scarce|component|
ADJ-GRADED 缺乏的;不足的;供不应求的If something is scarce, there is not enough of it. Food was scarce and expen ...
- HihoCode-1675-稀疏矩阵乘积
上来先一顿暴力,结果70分就超时了. 然后意识到稀疏矩阵,有很多0,如果c[i][j] != 0,那么一定存在至少一个k满足a[i][k] != 0 && b[k][j] != 0; ...
- 吴裕雄--天生自然 R语言开发学习:功效分析
#----------------------------------------# # R in Action (2nd ed): Chapter 10 # # Power analysis # # ...
- webgrind安装使用详细说明
webgrind是一个网页版的性能分析工具,它的主要作用就是分析xdebug生成的cachegrind文件,以一种界面友好详尽的方式来展示性能数据.试用了一下感觉还是很不错的,鉴于网上并没有一个系统介 ...
- log4j.properties和log4j.xml配置
>>>>1. 概述<<<< 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统 ...
- Jennifer Chayes: 生活始终在你手中
Jennifer Chayes 听到Mark Kac.Freeman J. Dyson.林家翘,或者是David I. Gottlie.BerndSturmfels和Sir John Ball等 ...
- Jupyter自定义设置详解
今天专门花时间总结梳理一下jupyter的一些高级设置,jupyter我已经介绍过一次基本内容了,Setup and Linux | James Chen's Blogs,尤其是如何在服务器运行jup ...
- MySQL安装和常用命令
一.安装MySQL groupadd mysqluseradd -r -g mysql mysqlgroups mysqlfind / -name mysql | xargs rm -rfwget h ...
- 从租人APP沦为性工作发布平台 看共享经济监管边界
看共享经济监管边界" title="从租人APP沦为性工作发布平台 看共享经济监管边界"> 继直播类软件部分涉黄之后,最近火爆的各类"租人"软件 ...
- Java 线程基础知识
前言 什么是线程?线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元.一个标准的线程由线程 ID,当前指令指针 (PC),寄存器集合和堆栈组成.另外,线 ...