Javascript 如何对字母数字数组os对象进行排序
我正在尝试按所示对包含字母数字值的对象数组进行排序Javascript 如何对字母数字数组os对象进行排序,javascript,arrays,sorting,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 >
[
{ 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}
]
但不确定如何排序并获得如下所示的输出
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}
]
请帮助我注意到您的对象有问题,变量的定义应如下所示:
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 );
var sorted=data.sort(函数(a,b){
if(a.bayid==b.bayid){
返回0;
}else if(a.bayid
sort
函数将函数作为参数,该函数作为比较函数(可选参数),根据函数的返回值对数组的值进行排序
根据规范:
数组元素根据compare函数的返回值进行排序
如果返回值为:
- 小于0,将a排序为比b更低的索引李>
- 0(等于零),使a和b彼此保持不变李>
- 大于0时,将b排序为低于a的索引李>
此外,如果您在创建新问题之前在网站上搜索,它可能会有所帮助。我注意到您的对象有问题,变量的定义应如下所示:
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 );
var sorted=data.sort(函数(a,b){
if(a.bayid==b.bayid){
返回0;
}else if(a.bayid
sort
函数将函数作为参数,该函数作为比较函数(可选参数),根据函数的返回值对数组的值进行排序
根据规范:
数组元素根据compare函数的返回值进行排序
如果返回值为:
- 小于0,将a排序为比b更低的索引李>
- 0(等于零),使a和b彼此保持不变李>
- 大于0时,将b排序为低于a的索引李>
如果您在创建新问题之前在网站上搜索,也可能会有帮助。您的排序函数应返回
1
、-1
或0
var sortedArray = modifiedStatusArray.sort(function(a, b) {
return a.bayid < b.bayid ? 1 : a.bayid > b.bayid ? -1 : 0;
});
var sortedArray=modifiedStatusArray.sort(函数(a,b){
返回a.bayidb.bayid?-1:0;
});
排序函数应返回1
、-1
或0
var sortedArray = modifiedStatusArray.sort(function(a, b) {
return a.bayid < b.bayid ? 1 : a.bayid > b.bayid ? -1 : 0;
});
var sortedArray=modifiedStatusArray.sort(函数(a,b){
返回a.bayidb.bayid?-1:0;
});
这种排序方法对任何数据都不起作用,更不用说字母数字数据了。排序回调不应返回布尔值。请尝试仅使用.sort(函数(A,b){return b.bayid.match(/\d+/)-A.bayid.match(/\d+/)})
该排序方法对任何数据都不起作用,更不用说字母数字数据了。排序回调不应该返回布尔值。请尝试仅使用.sort(函数(A,b){return b.bayid.match(/\d+/)-A.bayid.match(/\d+/)})
根据W3,Array.sort需要一个整数返回值(-1,0,1),而不是布尔值。您的顺序是[{bayid:'A1',status:0},{bayid:'A5 status:0},{bayid:'A6,status:0},{bayid:'A7',status:0}]
根据W3,Array.sort需要一个整数返回值(-1,0,1),而不是布尔值。您的顺序是[{bayid:'A1',status:0},{bayid:'A5',status:0},{bayid:'A6',status:0}]
我认为排序可能在这里向后。如果aa应该返回1
我想这里的排序可能是向后的。如果aa应该返回1