前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript对对象数组的两个字段排序

JavaScript对对象数组的两个字段排序

作者头像
celineWong7
发布2023-10-16 17:28:27
2510
发布2023-10-16 17:28:27
举报
文章被收录于专栏:web前端踩坑web前端踩坑

有个对象数组排序功能需求,需要对这个数组元素对象里头的两个字段进行判断。最直观想法是循环第一次判断第一个字段得到的新数组,再去循环这个新数组再判断第二个字段。这种方式逻辑直观,但是循环次数多,而且代码量也大。后来发现了sort()方法。

具体需求:

  1. 在线状态的排在前面,离线的在后面
  2. 在满足状态排序后databases字段长度按照小到大排序
代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <script type="text/javascript">
        var datas = [
            {
                "status": "离线",
                "children": [1,2,3]
            },
            {
                "status": "在线",
                "children": [1,2,3]
            },
            {
                "status": "离线",
                "children": [1,5,6,8]
            },
            {
                "status": "离线",
                "children": [2,3]
            },
            {
                "status": "在线",
                "children": [1]
            }
        ];


        function sortBy2Key(datas){
            datas.sort(function(a, b){
                // 状态:中文转换成数字比较,期望放在前面的使用小的数字。
                let statusA = a.status === '在线' ? 0 : 1;
                let statusB = b.status === '在线' ? 0 : 1;
                let lenA = a.children.length;
                let lenB = b.children.length;

                return statusA - statusB || lenA - lenB;
            });
        }

        sortBy2Key(datas);

        console.log(datas);
    </script>

</body>
</html>

代码运行结果

sort应该也能比较中文,应该是按照汉字编码数值来,具体还没有翻文档和测试下。但在本次案例种,还是得转换成期望比较顺序的数值。

参考文章

  1. 如何通过 JavaScript 中的两个字段对对象数组进行排序?

image.png

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考文章
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档