【排序】js简单实现前端数组排序,多字段数组对象排序,字符串排序,数字排序等

数组对象排序(多字段排序)

排序前:
在这里插入图片描述
排序后:
在这里插入图片描述

data() {
            return {
                list: [{
                        ks: '外科',
                        child_ks: '泌尿外科',
                        xz: '外科一组',
                        doctor: '小明',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '中医科',
                        child_ks: '中医男科',
                        xz: '外科一组',
                        doctor: '小红',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '中医科',
                        child_ks: '中医男科',
                        xz: '外科一组',
                        doctor: '小张',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '外科',
                        child_ks: '泌尿外科',
                        xz: '外科二组',
                        doctor: '小李',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '外科',
                        child_ks: '泌尿外科',
                        xz: '外科二组',
                        doctor: '小明',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '中医科',
                        child_ks: '中医妇科',
                        xz: '外科一组',
                        doctor: '小明',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '外科',
                        child_ks: '泌尿外科',
                        xz: '外科二组',
                        doctor: '小明',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '中医科',
                        child_ks: '中医妇科',
                        xz: '外科二组',
                        doctor: '小明',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                ]
            }
        },
methods: {
            // 多字段排序
            mysort(a, b) {
                if (a.ks !== b.ks) return a.ks < b.ks ? -1 : 1
                else if (a.child_ks !== b.child_ks) return a.child_ks < b.child_ks ? -1 : 1
                else if (a.xz !== b.xz) return a.xz < b.xz ? -1 : 1
            },
            test() {
                this.list.sort(this.mysort)
                console.log(this.list)
            }
        }
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <!-- 公共css文件 -->
    <link rel="stylesheet" href="/statics/css/common/common.css">
    <!-- 公共js文件 -->
    <script type="text/javascript" src="/statics/vue_element/common.js"></script>
    <!-- vue方面文件 -->
    <script src="/statics/vue_element/vue.js"></script>
    <script src="/statics/vue_element/element.js"></script>
    <link rel="stylesheet" href="/statics/vue_element/element.css">
    <script src="/statics/vue_element/axios.js"></script>
    <title>测试页</title>
</head>

<body>
    <div id="app" style="padding:10px;">
        <!-- 数组对象排序 -->
        <el-button type="primary" @click="test">数组对象排序</el-button>
        <div v-for="(item,index) in list" :key="index" style="font-size:16px;">{{item}}</div>

        <!-- 数组排序 -->
        <el-button type="primary" @click="numberPaixu" style="margin-top: 20px;">数组排序正</el-button>
        <el-button type="primary" @click="numberPaixu2">数组排序反</el-button>
        <div style="font-size:16px;margin-bottom:20px;">{{list2}}</div>

        <!-- 字符串排序 -->
        <el-button type="primary" @click="stringPaixu">字符串排序</el-button>
        <div style="font-size:16px;">{{list3}}</div>
    </div>
</body>
<script type="text/javascript">
    let v = new Vue({
        el: '#app',
        data() {
            return {
                list2: [8, 7, 9, 4, 3, 1, 2, 5, 6],
                list3: ['b','s','c','w','a','d','f'],
                list: [{
                        ks: '外科',
                        child_ks: '泌尿外科',
                        xz: '外科一组',
                        doctor: '小明',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '中医科',
                        child_ks: '中医男科',
                        xz: '外科一组',
                        doctor: '小红',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '中医科',
                        child_ks: '中医男科',
                        xz: '外科一组',
                        doctor: '小张',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '外科',
                        child_ks: '泌尿外科',
                        xz: '外科二组',
                        doctor: '小李',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '外科',
                        child_ks: '泌尿外科',
                        xz: '外科二组',
                        doctor: '小明',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '中医科',
                        child_ks: '中医妇科',
                        xz: '外科一组',
                        doctor: '小明',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '外科',
                        child_ks: '泌尿外科',
                        xz: '外科二组',
                        doctor: '小明',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                    {
                        ks: '中医科',
                        child_ks: '中医妇科',
                        xz: '外科二组',
                        doctor: '小明',
                        num: 18,
                        num2: 19,
                        num3: 20
                    },
                ]
            }
        },
        methods: {
            // 多字段排序
            mysort(a, b) {
                if (a.ks !== b.ks) return a.ks < b.ks ? -1 : 1
                else if (a.child_ks !== b.child_ks) return a.child_ks < b.child_ks ? -1 : 1
                else if (a.xz !== b.xz) return a.xz < b.xz ? -1 : 1
            },
            // 数组对象排序
            test() {
                this.list.sort(this.mysort)
                console.log(this.list)
            },
            // 数组排序(正)
            mysort2(a, b) {
                return a - b;
            },
            // 数组排序(反)
            mysort22(a, b) {
                return b - a;
            },
            // 数组排序
            numberPaixu() {
                this.list2.sort(this.mysort2)
            },
            // 数组排序
            numberPaixu2() {
                this.list2.sort(this.mysort22)
            },
            // 字符串排序
            stringPaixu(){
                this.list3.sort()
            }
        }
    })
</script>
<style scoped>

</style>

</html>

数组对象根据某一个字段排序

// 排序
compare(property) {
  return function (a, b) {
    var value1 = a[property];
    var value2 = b[property];
    return value1 - value2;
  }
}
//打印看结果
console.log(newArray.sort(this.compare("value")))

多条件排序

methods: {
            paixu() {
                this.data.sort(this.mysort);
            },
            // 多字段排序
            mysort(a, b) {
                if (a.ks_id_text !== b.ks_id_text) {
                	 // 过滤字段为null或者undefined的情况
                    if (a.ks_id_text !== null && a.ks_id_text !== undefined) {
                        return a.ks_id_text < b.ks_id_text ? -1 : 1;
                    } else {
                        return -1;
                    }
                } else if (a.child_ks_id_text !== b.child_ks_id_text) {
                    if (a.child_ks_id_text !== null && a.child_ks_id_text !== undefined) {
                        return a.child_ks_id_text < b.child_ks_id_text ? -1 : 1;
                    } else {
                        return -1;
                    }
                } else if (a.group_name !== b.group_name) {
                    if (a.group_name !== null && a.group_name !== undefined) {
                        return a.group_name < b.group_name ? -1 : 1;
                    } else {
                        return -1;
                    }
                }
            },
        }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要对JS数组对象进行字符串排序,可以使用Array的sort()方法。首先,我们需要指定排序的键值,该键值可以是字符串数组。如果是数组,则按照数组中的顺序依次进行多级排序。在sort()方法的回调函数中,可以使用比较函数来指定排序的方式,返回一个负数表示要将a放在b之前,返回一个正数表示要将a放在b之后,返回0表示a和b相等。如果不指定比较函数,默认按照Unicode编码进行排序。下面是一个示例代码: ```javascript let arr = [{name: 'John', age: 25}, {name: 'Bob', age: 30}, {name: 'Alice', age: 20}]; // 按照name字段升序排序 arr.sort((a, b) => a.name.localeCompare(b.name)); // 输出排序结果 console.log(arr); ``` 在上述示例中,我们使用了localeCompare()方法来进行字符串的比较,以实现按照name字段的升序排序。您可以根据需要调整比较函数来实现不同的排序方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [jsJavaScript 数组列表、数组对象列表排序, 字符串排序](https://blog.csdn.net/CSDN_33901573/article/details/126285993)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [JavaScript对象数组排序函数及六个用法](https://download.csdn.net/download/weixin_38553478/13140681)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

接口写好了吗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值