Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在JQUERY中,如何对以字符非数字开头的数组列表进行排序/排序?_Javascript_Jquery_Arrays_Sorting - Fatal编程技术网

Javascript 在JQUERY中,如何对以字符非数字开头的数组列表进行排序/排序?

Javascript 在JQUERY中,如何对以字符非数字开头的数组列表进行排序/排序?,javascript,jquery,arrays,sorting,Javascript,Jquery,Arrays,Sorting,我有一个数组: data =["c3.2xlarge","c3.4xlarge","c3.large"]; data= [ "c3.4xLarge", "c3.2xLarge", "c3.8xLarge", "c3.Large", "d3.4xLarge", "d3.2xLarge", "d3.8xLarge", "d3.Large", "t2.4xLarge", "t2.2xLarge", "t2.8xLarge", "t2.Large" ];

我有一个数组:

data =["c3.2xlarge","c3.4xlarge","c3.large"];

data= [ "c3.4xLarge", "c3.2xLarge", "c3.8xLarge", "c3.Large",
        "d3.4xLarge", "d3.2xLarge", "d3.8xLarge", "d3.Large", 
        "t2.4xLarge", "t2.2xLarge", "t2.8xLarge", "t2.Large"
      ];
它现在是按字母顺序排序的,但这给了我们真正希望c3.large首先出现的时间

预期输出=[c3.Large,c3.2xLarge,c3.4xLarge,c3.8xLarge, d3.大尺寸、d3.2xLarge、d3.4xLarge、d3.8xLarge、, t2.大,t2.2x大,t2.4x1大,t2.8x1大 ];


如何创建一个函数来对这样的对象进行排序?

重写js数组排序方法; 希望这能有所帮助

var数据=[c3.2xlarge,c3.4xlarge,c3.large]; console.logdata.sort函数a、b{ var aSub=a.子字符串3,4, b sub=b.子串3,4; ifisNaNaSub{ 返回-1; } 艾尔斯纳布苏酒店{ 返回1; } 否则{ 返回aSub>bSub?1:-1; }
};您希望它们如何排序,您希望得到什么样的输出?您好,欢迎光临,请提供您迄今为止的代码尝试,以便我们提供帮助。如果没有努力的证据,人们很少倾向于为您编写代码。正如David所说,还包括预期输出。数据=[c3.4XL,c3.2xLarge,c3.8XL,c3.Large,d3.4XL,d3.2XL,d3.8XL,d3.Large,t2.4XL,t2.2xLarge,t2.8XL,t2.Large,];预期输出:[c3.Large,c3.2xLarge,c3.4xLarge,c3.8xLarge,d3.2xLarge,d3.4xLarge,d3.8xLarge,t2.Large,t2.2xLarge,t2.4xLarge,t2.8xLarge];谢谢,柯蒂斯,干得好。但是,我有类似数组的数据=[c3.4XL,c3.2xLarge,c3.8XL,c3.Large,d3.4XL,d3.2xLarge,d3.8XL,d3.Large,t2.4XL,t2.2xLarge,t2.8XL,t2.Large,];预期输出:[c3.Large,c3.2xLarge,c3.4xLarge,c3.8xLarge,d3.2xLarge,d3.4xLarge,d3.8xLarge,t2.Large,t2.2xLarge,t2.4xLarge,t2.8xLarge,];那时候它是失败的。这意味着你应该先检查第一个字符,然后再检查第四个字符Done。。杰出的干得好。谢谢陈。只需对输入数组进行一些更改。。。我有这种类型的数组格式:data=[Object{key=c3.2xlarge,id=85},Object{key=c3.4xlarge,id=86},Object{key=c3.8xlarge,id=88},Object{key=c3.8xlarge,id=83},Object{key=c3.xlarge,id=84},Object{key=c4.2xlarge,id=89},Object{key=c4.4xlarge,id=91},Object{key=c4.8xlarge,id=92},Object key=c4.8xlarge,id=87},对象{key=c4.xlarge,id=90},对象{key=d2.2xlarge,id=104},对象{key=d2.4xlarge,id=103},对象{key=d2.8xlarge,id=105},对象{key=d2.xlarge,id=102});我试着这样做:使用a1.key,但输出不正确。data.sort函数a1,b1{var a=a1.key;var b=b1.key;---------返回数据;}将返回值更改为1或-1或0
 var data = [ "c3.4xLarge", "c3.2xLarge", "c3.8xLarge", "c3.Large", "d3.4xLarge", "d3.2xLarge", "d3.8xLarge", "d3.Large", "t2.4xLarge", "t2.2xLarge", "t2.8xLarge", "t2.Large", ];


 data.sort(function (a,b) {
    var firA = a.substring(0,1),
        firB = b.substring(0,1);
        // console.log(firA);
        // console.log(firB);
    if(firA != firB){
        return firA >firB ? 1 : -1;
    }
    var aSub = a.substring(3,4),
    bSub = b.substring(3,4);
    if(isNaN(aSub)){
        return -1;
    }
    else if(isNaN(bSub)){
        return 1;
    }
    else{
        return aSub > bSub ? 1:-1;
    }
})
 console.log(data);