简体   繁体   English

如何根据字符串中的数字对字符串进行排序,以(。)分隔

[英]How to sort the string based on numbers present in it, separated by (.)

Hi I want to sort the string based on numbers present in it eg 嗨,我想根据其中的数字对字符串进行排序,例如

  • 1.1.act2 1.1.act2
  • 13.1.2.1.act3 13.1.2.1.act3
  • 2.1.4.act56 2.1.4.act56
  • 1.3.actorg 1.3.actorg
  • 3.1.3.args 3.1.3.args
  • 13.1.3.4.acr 13.1.3.4.acr

I want to this in a manner 我想以某种方式这样做

  • 1.1.act2 1.1.act2
  • 1.3.actorg 1.3.actorg
  • 2.1.4.act56 2.1.4.act56
  • 3.1.3.args 3.1.3.args
  • 13.1.2.1.act3 13.1.2.1.act3
  • 13.1.3.4.acry 13.1.3.4.acry

How do I achieve it in javascript? 我如何在JavaScript中实现它?

You can use the Arrays sort method with a custom iterator function. 您可以将Arrays sort方法与自定义迭代器函数一起使用。 eg: 例如:

mylist = ["1.1.act2", "13.1.2.1.act3", "2.1.4.act56", "1.3.actorg", "3.1.3.args", "13.1.3.4.acr"];

mylist.sort(function(a, b) {
    a = a.split("."); b = b.split(".");
    var parts = Math.min(a.length, b.length);
    for(var i = 0; i < parts; ++i) {
        var numA = parseInt(a[i]); var numB = parseInt(b[i]);
        if (numA != numB)
            return numA > numB;
    }
});

This is a stub and untested, but I guess you see where I'm heading 这是一个未经测试的存根,但我想你会看到我要去的地方

Try this. 尝试这个。 This code is not optimized but it works 此代码未优化但可以正常工作

    <script type="text/javascript">
function fnc()
{
    var arr=new Array();
arr[0]="1.1.act2";
arr[1]="13.1.2.1.act3";
arr[2]="2.1.4.act56";
arr[3]="1.3.actorg";
arr[4]="3.1.3.args";
arr[5]="13.1.3.4.acr";

var it0=arr[0].split(".");
var it1=arr[1].split(".");
var it2=arr[2].split(".");
var it3=arr[3].split(".");
var it4=arr[4].split(".");
var it5=arr[5].split(".");

var newarr=new Array();
newarr[0]=parseInt(it0[0],10);
newarr[1]=parseInt(it1[0],10);
newarr[2]=parseInt(it2[0],10);
newarr[3]=parseInt(it3[0],10);
newarr[4]=parseInt(it4[0],10);
newarr[5]=parseInt(it5[0],10);

newarr.sort(function(a,b){return a-b});
alert(newarr);
for(i=0;i<arr.length;i++)
{

    if(newarr[i]==it0[0])
    {console.log(arr[0]);}
    else if(newarr[i]==it1[0])
    {console.log(arr[1]);}
    else if(newarr[i]==it2[0])
    {console.log(arr[2]);}
    else if(newarr[i]==it3[0])
    {console.log(arr[3]);}
    else if(newarr[i]==it4[0])
    {console.log(arr[4]);}
    else if(newarr[i]==it5[0])
    {console.log(arr[5]);}
    else if(newarr[i]==it6[0])
    {console.log(arr[6]);}
}
}
<input type="button" onclick="fnc()" value="click" />

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM