Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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 - Fatal编程技术网

Javascript 在jQuery中使用整型字符串类型对数组进行排序

Javascript 在jQuery中使用整型字符串类型对数组进行排序,javascript,jquery,Javascript,Jquery,我有一个字符串类型的整数数组 var a = ['200','1','40','0','3']; 输出 我还将有一个混合类型数组。e、 g var c = ['200','1','40','apple','orange']; 输出 ============================================================= 字符串类型的整数未排序 据我所知,大多数javascript实现都提供了一个函数,您可以传入该函数来提供自己的自定义排序 这应该是你要找的

我有一个字符串类型的整数数组

var a = ['200','1','40','0','3'];
输出
我还将有一个混合类型数组。e、 g

var c = ['200','1','40','apple','orange'];
输出 =============================================================

字符串类型的整数未排序

据我所知,大多数javascript实现都提供了一个函数,您可以传入该函数来提供自己的自定义排序


这应该是你要找的

var c = ['200','1','40','cba','abc'];
c.sort(function(a, b) {
  if (isNaN(a) || isNaN(b)) {
    if (a > b) return 1;
    else return -1;
  }
  return a - b;
});
// ["1", "40", "200", "abc", "cba"]

您需要编写自己的排序函数

a.sort(function(a,b)) {
    var intValA = parseInt(a, 10);
    var intValB = parseInt(b, 10);

    if (!isNaN(parseInt(a, 10))) && !isNaN(parseInt(b, 10)) {
        // we have two integers
        if (intValA > intValB)
            return 1;
        else if (intValA < intValB)
            return 0;
        return 1;
    }
    if (!isNaN(parseInt(a, 10)) && isNaN(parseInt(b, 10)))
        return 1;
    if (isNaN(parseInt(a, 10)) && !isNaN(parseInt(b, 10)))
        return -1;

    // a and b are not integers
    if (a > b)
        return 1;
    if (a < b)
        return -1;
    return 0;
});
a.sort(函数(a,b)){
var intValA=parseInt(a,10);
var intValB=parseInt(b,10);
如果(!isNaN(parseInt(a,10))&&!isNaN(parseInt(b,10)){
//我们有两个整数
如果(intValA>intValB)
返回1;
否则如果(intValAb)
返回1;
if(a
正如其他人所说,您可以编写自己的比较函数:

var arr = ["200", "1", "40", "cat", "apple"]
arr.sort(function(a,b) {
  if (isNaN(a) || isNaN(b)) {
    return a > b ? 1 : -1;
  }
  return a - b;
});

// ["1", "40", "200", "apple", "cat"]

谢谢大家,虽然我不太了解jQuery,但从你们的例子中,我总结了如下代码,这些代码符合我的要求

用于萤火虫
var数据=['10'、'2'、'apple'、'c'、'1'、'200'、'a'],温度;
temp=数据排序(函数(a,b){
var an=+a;
var bn=+b;
如果(!isNaN(an)&&!isNaN(bn)){
返回一个-bn;
} 
返回ab?1:0;
}) ;
警报(临时);


您需要如何对其进行排序?首先按数字顺序排列数字,然后按字母顺序排列字母?那么,你需要什么呢?@YuriyGalanter,先排列数字,然后按字母顺序排列……@user1051068请用预期的输出更新问题。@user1051068试试
['200'、'1'、'40'、'orange'、'apple']
,你会看到字符串也被排序了。您的示例已经对字符串进行了排序。和
“1”、“200”、“40”是正确的顺序。如果Alpha不需要排序,则不接受基数参数。更重要的是,只需使用
-
操作符即可将字符串转换为数字(而且速度更快)。换句话说,如果在最后一个var data=['88'、'331'、'11'、'46'、'4445'、'200'、'a'、'300']中存在另一个字符串类型的整数,则just
返回a-b
。排序失败;alert(data.sort(函数(a,b){return parseFloat(a)-parseFloat(b);}));在parseInt总是返回false之后应用IsNan不是吗?你可以用三元运算符而不是这么多if语句,例如
return ab,使它不那么冗长?1:0
@Phrogz,是的,我试图让返回的详细信息更容易阅读,但你是对的-它比需要的长。另外,如果两者都是数字,你可以返回差值。如果其中只有一个是数字,那么你可以将它们作为字符串进行比较。她补充说,在我完成之后:)刚刚更新了我的,但我喜欢你的一行有趣的事情是,
parseInt()
是不必要的(尽管它让事情变得更清楚):)c=['200','1','10','40','cba','abc'];运行函数[“200”、“1”、“10”、“40”、“cba”、“abc”]不走运,这样您现在
+a
可以强制a为整数,否则返回
NaN
。使用coersion-Kazuki的答案可以是最短的:
arr.sort(函数(a,b){if(isNaN(a)| | isNaN(b)){返回a>b?1:-1;}返回a-b;})
@soulcheck
+a
强制为数字,而不是“整数”。@Kazuki,soulcheck做了一些符合我标准的修改。。谢谢
a.sort(function(a,b)) {
    var intValA = parseInt(a, 10);
    var intValB = parseInt(b, 10);

    if (!isNaN(parseInt(a, 10))) && !isNaN(parseInt(b, 10)) {
        // we have two integers
        if (intValA > intValB)
            return 1;
        else if (intValA < intValB)
            return 0;
        return 1;
    }
    if (!isNaN(parseInt(a, 10)) && isNaN(parseInt(b, 10)))
        return 1;
    if (isNaN(parseInt(a, 10)) && !isNaN(parseInt(b, 10)))
        return -1;

    // a and b are not integers
    if (a > b)
        return 1;
    if (a < b)
        return -1;
    return 0;
});
var arr = ["200", "1", "40", "cat", "apple"]
arr.sort(function(a,b) {
  if (isNaN(a) || isNaN(b)) {
    return a > b ? 1 : -1;
  }
  return a - b;
});

// ["1", "40", "200", "apple", "cat"]
var data = ['10','2', 'apple', 'c' ,'1', '200', 'a'], temp;
temp = data.sort(function(a,b) {
         var an = +a;
         var bn = +b;
          
         if (!isNaN(an) && !isNaN(bn)) {
             return an - bn;
         } 
         return a<b ? -1 : a>b ? 1 : 0;
     }) ;
alert(temp);