JavaScript按IP地址列表排序,主要思路就是分割每个点号部分,然后ip1和ip2分别对不够三位数的进行补0操作,然后转换为数字类型进行一一比较。

  上代码:

  正序:

  

     var arr=[
{ip:"10.20.39.12"},
{ip:"43.120.39.11"},
{ip:"25.210.39.21"},
{ip:"75.110.39.131"},
{ip:"12.230.139.14"},
{ip:"17.20.39.121"},
{ip:"11.220.139.111"},
{ip:"172.30.39.131"},
{ip:"190.10.139.123"},
{ip:"170.20.4.222"}
] console.log(IpSortForward(arr,"ip")); //正序
function IpSortForward(data, p) {
for (i = 0; i < data.length - 1; i++) {
for (j = 0; j < data.length - 1 - i; j++) {
var arr1 = data[j][p].split("."), arr2 = data[j + 1][p].split(".");
if (arr1[0].length == 2) {
var t = arr1[0]+"0";
arr1[0] = t;
}else if(arr1[0].length == 1){
var t = arr1[0]+"00";
arr1[0] = t;
}else{} if (arr1[1].length == 2) {
var t = arr1[1]+"0";
arr1[1] = t;
}else if(arr1[1].length == 1){
var t = arr1[1]+"00";
arr1[1] = t;
}else{} if (arr1[2].length == 2) {
var t = arr1[2]+"0";
arr1[2] = t;
}else if(arr1[2].length == 1){
var t = arr1[2]+"00";
arr1[2] = t;
}else{} if (arr1[3].length == 2) {
var t = arr1[3]+"0";
arr1[3] = t;
}else if(arr1[3].length == 1){
var t = arr1[3]+"00";
arr1[3] = t;
}else{} if (arr2[0].length == 2) {
var t = arr2[0]+"0";
arr2[0] = t;
}else if(arr1[0].length == 1){
var t = arr2[0]+"00";
arr2[0] = t;
}else{} if (arr2[1].length == 2) {
var t = arr2[1]+"0";
arr2[1] = t;
}else if(arr2[1].length == 1){
var t = arr2[1]+"00";
arr2[1] = t;
}else{} if (arr2[2].length == 2) {
var t = arr2[2]+"0";
arr2[2] = t;
}else if(arr2[2].length == 1){
var t = arr2[2]+"00";
arr2[2] = t;
}else{} if (arr2[3].length == 2) {
var t = arr2[3]+"0";
arr2[3] = t;
}else if(arr2[3].length == 1){
var t = arr2[3]+"00";
arr2[3] = t;
}else{} var param1=arr1[0]+arr1[1]+arr1[2]+arr1[3];
var param2=arr2[0]+arr2[1]+arr2[2]+arr2[3]; if (parseInt(param1) > parseFloat(param2)) {
var temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
return data;
}

  反序:

  

     var arr=[
{ip:"10.20.39.12"},
{ip:"43.120.39.11"},
{ip:"25.210.39.21"},
{ip:"75.110.39.131"},
{ip:"12.230.139.14"},
{ip:"17.20.39.121"},
{ip:"11.220.139.111"},
{ip:"172.30.39.131"},
{ip:"190.10.139.123"},
{ip:"170.20.4.222"}
] console.log(IpSortForward(arr,"ip")); //反序
function IpSortReverse(data, p) {
for (i = 0; i < data.length - 1; i++) {
for (j = 0; j < data.length - 1 - i; j++) {
var arr1 = data[j][p].split("."), arr2 = data[j + 1][p].split(".");
if (arr1[0].length == 2) {
var t = arr1[0]+"0";
arr1[0] = t;
}else if(arr1[0].length == 1){
var t = arr1[0]+"00";
arr1[0] = t;
}else{} if (arr1[1].length == 2) {
var t = arr1[1]+"0";
arr1[1] = t;
}else if(arr1[1].length == 1){
var t = arr1[1]+"00";
arr1[1] = t;
}else{} if (arr1[2].length == 2) {
var t = arr1[2]+"0";
arr1[2] = t;
}else if(arr1[2].length == 1){
var t = arr1[2]+"00";
arr1[2] = t;
}else{} if (arr1[3].length == 2) {
var t = arr1[3]+"0";
arr1[3] = t;
}else if(arr1[3].length == 1){
var t = arr1[3]+"00";
arr1[3] = t;
}else{} if (arr2[0].length == 2) {
var t = arr2[0]+"0";
arr2[0] = t;
}else if(arr1[0].length == 1){
var t = arr2[0]+"00";
arr2[0] = t;
}else{} if (arr2[1].length == 2) {
var t = arr2[1]+"0";
arr2[1] = t;
}else if(arr2[1].length == 1){
var t = arr2[1]+"00";
arr2[1] = t;
}else{} if (arr2[2].length == 2) {
var t = arr2[2]+"0";
arr2[2] = t;
}else if(arr2[2].length == 1){
var t = arr2[2]+"00";
arr2[2] = t;
}else{} if (arr2[3].length == 2) {
var t = arr2[3]+"0";
arr2[3] = t;
}else if(arr2[3].length == 1){
var t = arr2[3]+"00";
arr2[3] = t;
}else{} var param1=arr1[0]+arr1[1]+arr1[2]+arr1[3];
var param2=arr2[0]+arr2[1]+arr2[2]+arr2[3]; if (parseInt(param1) < parseFloat(param2)) {
var temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
}
}
}
return data;
}

  这是其他排序的方法,欢迎查看,欢迎给意见!

JavaScript非数字(中文)排序

  JavaScript按纯数字排序

  JavaScript日期排序

  JavaScript按日期排序之灵活排序

JavaScript按IP地址排序的更多相关文章

  1. python对ip地址排序、对列表进行去重

    一:使用python对ip地址排序所用代码示例一: import socket iplist = ['10.5.11.1','192.168.1.33','10.5.2.4','10.5.1.3',' ...

  2. javascript把IP地址转为数值几种方案,来挑战一下效率吧

    先看看什么是IP地址: IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节).IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~25 ...

  3. JavaScript实现IP地址的输入框方式

    最近遇到一些这样的需求:实现一种IP地址的输入方式,就是输入3个字符或自动跳到下一个输入框内,删除的时候,一个输入框没有了字符,自动跳回上一个输入框.看到这里,相信大家都有一些想法了,没错,这种方法就 ...

  4. Excel中IP地址排序

    思路 将IP地址按"."分隔,提取"."之间的每个数,然后根据提取出的列从左至右进行主要字段及次要字段排序 公式说明 返回一个字符串在另一个字符串中出现的起始位 ...

  5. JavaScript按纯数字排序

      直接上代码: var arr=[ {name:"张散步",age:"23",sports:"篮球",number:"23112 ...

  6. js获取IP地址方法总结_转

    js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址 ...

  7. js获取IP地址多种方法实例教程

    js获取IP地址方法总结   js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338. ...

  8. js获取IP地址方法总结

    js代码获取IP地址的方法,如何在js中取得客户端的IP地址.原文地址:js获取IP地址的三种方法 http://www.jbxue.com/article/11338.html 1,js取得IP地址 ...

  9. java正则表达式小练习(IP地址检测、排序,叠词的处理,邮件地址的获取)

    import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; import java.util.reg ...

随机推荐

  1. ElasticSearch核心知识总结(二)

    如何超出扩容极限,以及如何提升容错性 primary&replica自动负载均衡,6个shared,3个primary,3个replica,随着机器扩容,会被均衡分配到多台机器上 6个shar ...

  2. Shell-10--if

  3. javascript 异步解析

    js 异步解析 一 .js单线程分析 我们都知道js的一大特点是单线程,也就是同一时间点,只能处理一件事,一句js代码.那为什么js要设计成单线程而不是多线程呢?这主要和js的用途有关,js作为浏览器 ...

  4. 大数据项目相关技术栈(Hadoop周边技术)

    J2EE 框架Spring 开发框架 + SSH or SSM Lucene 索引和查询IKAnalyzer 分词Webmagic 爬虫 ETL工具:KettleSqoop 结构化数据库-hadoop ...

  5. 从零开始学 Spring Boot

    1.下载 spring-tool-suite https://spring.io/tools3/sts/legacy 2.解压运行 sts-bundle\sts-3.9.7.RELEASE\STS.e ...

  6. Windows下为 Eclipse 配置 C/C++ 编译环境(转)

    1.Eclipse及CDT的安装 CDT的全称是C/C++ DevelopmentTools,CDT使得Eclipse能够支持C/C++的开发.直接下载 eclipse CDT 集成版 下载地址:ht ...

  7. easyui combobox下拉列表的多选值

    html: <input id="cc" class="easyui-combobox" value="" data-options= ...

  8. jquery插入,复制、替换和删除节点

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  9. 阿里云 Ubuntu16.04 apache2 ssl证书下载与安装(必须有域名)

    阿里云申请免费SSL证书并下载(包含xxx.key|xxx._root_bundle.crt|xxx._public.crt三个文件) 用https是自己的网站收到保护,不易被攻克,所以保护自己的网站 ...

  10. U3D GameObject 解读

    GameObject本身没有功能,是Unity场景里所有组件的基类,但很多时候我们需要在脚本中操作GameObject.先讲一下GameObject类包含哪些内容,其中常用的用红色标出了 Variab ...