我正在尝试对包含字母数字值
的对象进行排序[
{ 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}
]
请帮助
答案 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
函数将函数作为参数,该函数表现为比较函数(可选参数),它根据函数的返回值对数组的值进行排序。
来自规范:
数组元素根据比较函数的返回值
进行排序
如果返回值为:
来自the spec的更多信息。
如果您在创建新问题之前在网站上搜索,那么a very similar question on the site也可能会有所帮助。
答案 1 :(得分:0)
您的排序功能应该返回1
,-1
或0
var sortedArray = modifiedStatusArray.sort(function(a, b) {
return a.bayid < b.bayid ? 1 : a.bayid > b.bayid ? -1 : 0;
});