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. 周末,说声php的setter&getter(魔术)方法,你们辛苦了

    php 作为快速迭代项目的语言,其牛逼性质自不必多说.今天咱们要来说说php语言几个魔术方法,当然了,本文主要以setter&getter方法说明为主. 首先,咱们得知道什么叫魔术方法? 官方 ...

  2. LeetCode--No.012 Integer to Roman

    12. Integer to Roman Total Accepted: 71315 Total Submissions: 176625 Difficulty: Medium Given an int ...

  3. Spark 的 Shuffle过程介绍`

    Spark的Shuffle过程介绍 Shuffle Writer Spark丰富了任务类型,有些任务之间数据流转不需要通过Shuffle,但是有些任务之间还是需要通过Shuffle来传递数据,比如wi ...

  4. 构建NTP时间服务器

    NTP服务器是用于局域网服务器时间同步使用的,可以保证局域网所有的服务器与时间服务器的时间保持一致,某些应用对时间实时性要求高的必须统一时间. 互联网的时间服务器也有很多,例如ntpdate ntp. ...

  5. C# signtool error:no certificates were found that met all the given criteria 错误解决方案

    程序运行时报错:signtool error:no certificates were found that met all the given criteria (汉译:符号工具错误:没有找到符合所 ...

  6. 转载:https原理:证书传递、验证和数据加密、解密过程解析

    写的太好了,就是我一直想找的内容,看了这个对https立马明白多了 http://www.cnblogs.com/zhuqil/archive/2012/07/23/2604572.html 我们都知 ...

  7. Set "$USE_DEPRECATED_NDK=true" in gradle.properties to continue using the current NDK integration. 解决办法

    1.将 jni 文件夹名改为 cpp: 2.添加 CMakeLists.txt; 3.修改 build.gradle; externalNativeBuild { cmake { path " ...

  8. Apache Commons Beanutils 二 (动态Bean - DynaBeans)

    相关背景 上一篇介绍了PropertyUtils的用法,PropertyUtils主要是在不修改bean结构的前提下,动态访问bean的属性: 但是有时候,我们会经常希望能够在不定义一个Java类的前 ...

  9. 【PyTorch深度学习60分钟快速入门 】Part4:训练一个分类器

      太棒啦!到目前为止,你已经了解了如何定义神经网络.计算损失,以及更新网络权重.不过,现在你可能会思考以下几个方面: 0x01 数据集 通常,当你需要处理图像.文本.音频或视频数据时,你可以使用标准 ...

  10. angular监听dom渲染完成,判断ng-repeat循环完成

    一.前言 最近做了一个图片懒加载的小插件,功能需要dom渲染完成后,好获取那些需要懒加载的dom元素.那么问题来了,如果只是感知静态的dom用ready,onload都可以,但项目用的angular, ...