【问题标题】:How to Sort/Ordering of array list of array that start with the charecter not numeric in JQUERY?如何对 JQUERY 中以非数字字符开头的数组列表进行排序/排序?
【发布时间】:2016-07-18 10:17:58
【问题描述】:

我有一个数组:

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.Large”、“d3.2xLarge”、“d3.4xLarge”、“d3.8xLarge”、 “t2.Large”、“t2.2xLarge”、“t2.4xLarge”、“t2.8xLarge” ];

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

【问题讨论】:

  • 你希望它们如何排序,你期望什么输出?
  • 您好,欢迎您提供到目前为止的代码尝试,以便我们提供帮助。人们很少愿意在没有努力证明的情况下为您编写代码。正如大卫所说,还包括预期输出。
  • 数据= [“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.2xLarge”,“c3.4xLarge”,“c3.8xLarge”,“d3.Large”,“d3.2xLarge”,“d3.4xLarge”,“d3.8xLarge” ", "t2.Large","t2.2xLarge", "t2.4xLarge", "t2.8xLarge" ];

标签: javascript jquery arrays sorting


【解决方案1】:

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

var data = ["c3.2xlarge","c3.4xlarge","c3.large"];
    console.log(data.sort(function (a,b) {
        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;
    }
}));

【讨论】:

  • 谢谢柯蒂斯,工作正常。但是,我有 Array Like , 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.2xLarge”,“c3.4xLarge”,“c3.8xLarge”,“d3.Large”,“d3.2xLarge”,“d3.4xLarge”,“d3.8xLarge” ", "t2.Large","t2.2xLarge", "t2.4xLarge", "t2.8xLarge", ];到时候就失败了。
  • 这意味着你应该在检查第四个字符之前检查第一个字符
【解决方案2】:
 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);

【讨论】:

  • 完成.. 非常好。工作正常。谢谢陈。
  • 输入数组的改动很少...我有这种类型的数组格式:data=[ Object { key="c3.2xlarge", id=85}, Object { key="c3. 4xlarge", id=86}, 对象 { key="c3.8xlarge", id=88}, 对象 { key="c3.large", id=83}, 对象 { key="c3.xlarge", id= 84},对象{key="c4.2xlarge",id=89},对象{key="c4.4xlarge",id=91},对象{key="c4.8xlarge",id=92},对象{ key="c4.large", 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(function (a1, b1) { var a = a1.key; var b = b1.key; ------- -------- -------- 返回数据; }
  • 将返回值更改为 1 或 -1 或 0
猜你喜欢
  • 2017-09-26
  • 2011-03-26
  • 2023-03-15
  • 2019-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多