对对象数组根据属性值进行排序
P粉561749334
P粉561749334 2023-08-21 12:42:00
[JavaScript讨论组]

我使用AJAX获取了以下对象,并将它们存储在一个数组中:

var homes = [
    {
        "h_id": "3",
        "city": "达拉斯",
        "state": "德克萨斯州",
        "zip": "75201",
        "price": "162500"
    }, {
        "h_id": "4",
        "city": "贝弗利山庄",
        "state": "加利福尼亚州",
        "zip": "90210",
        "price": "319250"
    }, {
        "h_id": "5",
        "city": "纽约",
        "state": "纽约州",
        "zip": "00010",
        "price": "962500"
    }
];

我如何使用JavaScript创建一个函数,仅使用price属性按升序降序对对象进行排序?

P粉561749334
P粉561749334

全部回复(2)
P粉956441054

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

const sort_by = (field, reverse, primer) => {

  const 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));
  }
}


//现在您可以按任何字段排序...

const 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"}];

// 按价格从高到低排序
console.log(homes.sort(sort_by('price', true, parseInt)));

// 按城市排序,不区分大小写,按A-Z排序
console.log(homes.sort(sort_by('city', false, (a) =>  a.toUpperCase()
)));
P粉493534105

按价格升序排序房屋:

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

或者在ES6版本之后:

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

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

要按降序排序,您可以使用

homes.sort((a, b) => parseFloat(b.price) - parseFloat(a.price));
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号