为了账号安全,请及时绑定邮箱和手机立即绑定

按属性排序JavaScript对象数组

按属性排序JavaScript对象数组

慕婉清6462132 2019-05-22 13:52:54
按属性排序JavaScript对象数组我使用Ajax读取以下对象并将它们存储在一个数组中:var homes = [     {         "h_id": "3",         "city": "Dallas",         "state": "TX",         "zip": "75201",         "price": "162500"     }, {         "h_id": "4",         "city": "Bevery Hills",         "state": "CA",         "zip": "90210",         "price": "319250"     }, {         "h_id": "5",         "city": "New York",         "state": "NY",         "zip": "00010",         "price": "962500"     }];如何使用JavaScript 创建一个函数来按price属性按升序 或 降序对对象进行排序?
查看完整描述

4 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

按价格按升序排序房屋:

homes.sort(function(a, b) {
    return parseFloat(a.price) - parseFloat(b.price);});

或者在ES6版本之后:

homes.sort((a, b) => parseFloat(a.price) - parseFloat(b.price));

有些文档可以在这里找到。


查看完整回答
反对 回复 2019-05-22
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

这是一个更灵活的版本,它允许您创建可重复使用的排序函数,并按任何字段排序。


var sort_by = function(field, reverse, primer){


   var key = primer ? 

       function(x) {return primer(x[field])} : 

       function(x) {return x[field]};


   reverse = !reverse ? 1 : -1;


   return function (a, b) {

       return a = key(a), b = key(b), reverse * ((a > b) - (b > a));

     } 

}

现在您可以随意按任意字段排序......


var homes = [{


   "h_id": "3",

   "city": "Dallas",

   "state": "TX",

   "zip": "75201",

   "price": "162500"


}, {


   "h_id": "4",

   "city": "Bevery Hills",

   "state": "CA",

   "zip": "90210",

   "price": "319250"


}, {


   "h_id": "5",

   "city": "New York",

   "state": "NY",

   "zip": "00010",

   "price": "962500"


}];


// Sort by price high to low

homes.sort(sort_by('price', true, parseInt));


// Sort by city, case-insensitive, A-Z

homes.sort(sort_by('city', false, function(a){return a.toUpperCase()}));


查看完整回答
反对 回复 2019-05-22
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

要对它进行排序,您需要创建一个带有两个参数的比较器函数。然后使用该比较器函数调用sort函数,如下所示:

// a and b are object elements of your arrayfunction mycomparator(a,b) {
  return parseInt(a.price, 10) - parseInt(b.price, 10);}homes.sort(mycomparator);

如果要对升序进行排序,请在减号的每一侧切换表达式。


查看完整回答
反对 回复 2019-05-22
?
动漫人物

TA贡献1815条经验 获得超10个赞

对于字符串排序,如果有人需要它,

var dataArr = {  

    "hello": [{
    "id": 114,
    "keyword": "zzzzzz",
    "region": "Sri Lanka",
    "supportGroup": "administrators",
    "category": "Category2"}, {
    "id": 115,
    "keyword": "aaaaa",
    "region": "Japan",
    "supportGroup": "developers",
    "category": "Category2"}]};var sortArray = dataArr['hello'];sortArray.sort(function(a,b) {
    if ( a.region < b.region )
        return -1;
    if ( a.region > b.region )
        return 1;
    return 0;} );


查看完整回答
反对 回复 2019-05-22
  • 4 回答
  • 0 关注
  • 1157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信