如何对数组os对象进行排序,这些对象是字母数字

时间:2016-03-10 00:10:25

标签: javascript arrays sorting

我正在尝试对包含字母数字值

的对象进行排序
[
{ bayid="A1",  status=0}, 
{ bayid="A7",  status=0}, 
{ bayid="A6",  status=0}, 
{ bayid="A5",  status=0}
]

我使用的是.sort方法,如下所示

var sortedArray = modifiedStatusArray.sort(function(a, b) {
                return +b.bayid > +a.bayid;
            });

但不确定如何排序并获得如下所示的输出

[

{ bayid="A7",  status=0}, 
{ bayid="A6",  status=0}, 
{ bayid="A5",  status=0},
{ bayid="A1",  status=0}
]

请帮助

2 个答案:

答案 0 :(得分:2)

我注意到你的对象有问题,你变量的定义应该如下:

var data = [
    { bayid: "A1",  status: 0}, 
    { bayid: "A7",  status: 0}, 
    { bayid: "A6",  status: 0},
    { bayid: "A5",  status: 0}
];

您可以使用排序功能:

var sorted = data.sort(function(a, b){
    if( a.bayid === b.bayid ){
      return 0;
    } else if ( a.bayid < b.bayid ) {
      return 1;
    } else {
      return -1;
    }
});
console.log( sorted );

sort函数将函数作为参数,该函数表现为比较函数(可选参数),它根据函数的返回值对数组的值进行排序。

来自规范:

  

数组元素根据比较函数的返回值

进行排序

如果返回值为:

  • 小于0,将a排序为低于b的索引。
  • 0(等于零),使a和b相对于彼此保持不变。
  • 大于0,将b排序为低于a的索引。

来自the spec的更多信息。

如果您在创建新问题之前在网站上搜索,那么a very similar question on the site也可能会有所帮助。

答案 1 :(得分:0)

您的排序功能应该返回1-10

var sortedArray = modifiedStatusArray.sort(function(a, b) {
    return a.bayid < b.bayid ? 1 : a.bayid > b.bayid ? -1 : 0;
});