• 对字符串格式的日期进行排序


    假定数组menu如下:

    menu: [{  
    zt: '已交', // 属性名是别人随便写的, 我就没改了
    obj: '语文',
    dt: '2017-04-15',
    },
    {
    zt: '未交',
    obj: '数学',
    dt: '2022-12-14',
    },
    {
    zt: '已交',
    obj: '英语',
    dt: '2019-04-15',
    }
    ]

    初始页面渲染如下:


    要求把数组menu中最新的日期排在最前面
    主要思路是去掉"-"号然后排序然后加上"-"号的


    方法1(新):
     1 // 去掉"-"号
     2 arr.forEach((d, index) => {
     3     arr[index].dt = +d.dt.replace(/-/g, '');
     4 });
     5 
     6 // 简单的选择排序
     7 for (let i = 0; i < arr.length - 1; i++) {
     8                     for (let j = i + 1; j < arr.length; j++) {
     9                         if (arr[j].dt > arr[i].dt) {
    10                             let min_dt, min_zt, min_obj;
    11                             min_dt = arr[i].dt;
    12                             arr[i].dt = arr[j].dt;
    13                             arr[j].dt = min_dt;
    14                             // 顺便把zt 和 obj也排序
    15                             min_zt = arr[i].zt;
    16                             arr[i].zt = arr[j].zt;
    17                             arr[j].zt = min_zt;
    18 
    19                             min_obj = arr[i].obj;
    20                             arr[i].obj = arr[j].obj;
    21                             arr[j].obj = min_obj;
    22                         }
    23                     }
    24                 }
    25 
    26 
    27 // 增加"-"号
    28 arr.forEach((d, index) => {
    29     arr[index].dt = arr[index].dt.toString().slice(0,4) + '-' + arr[index].dt.toString().slice(4,6) + '-' + arr[index].dt.toString().slice(6,8) ;
    30 });
    31 
    32 console.log("处理后的arr:", arr);
    
    
    
    
    
     
    
    
    
     
    
    
    




    方法二 :

    <template>
        <div>
            <div class="wrapper">
                <div class="main" v-for="(item,index) in menu" :key='index'>
                    <div class="obj">{{item.obj}} {{item.dt}}</div>
                    <div class="zt">{{item.zt}}</div>
                </div>
            </div>
            <button @click="test()">(点击排序)</button>
    
        </div>
    </template>
    
    
    <script>
        export default {
            
            data() {
                return {
                    menu: [{
                            zt: '已交',
                            obj: '语文',
                            dt: '2017-04-15',
                        },
                        {
                            zt: '未交',
                            obj: '数学',
                            dt: '2022-12-14',
                        },
                        {
                            zt: '已交',
                            obj: '英语',
                            dt: '2019-04-15',
                        }
                    ],
    
                }
            },
            methods: {
                test() {
                    var new_arr = [];
                    var original_menu = this.menu;
                    console.log(original_menu);
                    // 去掉 - 号, 转换为数字类型
                    original_menu.forEach(function(item) {
                        console.log("item.dt",item.dt);
                        let temp_item;
                        temp_item = item.dt;
                        temp_item = +(temp_item.split('-').join(''));
                        console.log("temp_item:", temp_item);
                        new_arr.push({
                            zt: item.zt,
                            obj: item.obj,
                            dt: temp_item,
                        })
                    });
    
                    console.log("新数组new_arr:", new_arr);
                    // 选择排序
                    for (let i = 0; i < new_arr.length - 1; i++) {
                        for (let j = i + 1; j < new_arr.length; j++) {
                            if (new_arr[j].dt > new_arr[i].dt) {
                                let min_dt, min_zt, min_obj;
                                min_dt = new_arr[i].dt;
                                new_arr[i].dt = new_arr[j].dt;
                                new_arr[j].dt = min_dt;
                                // 顺便把dt 和 obj也排序
                                min_zt = new_arr[i].zt;
                                new_arr[i].zt = new_arr[j].zt;
                                new_arr[j].zt = min_zt;
    
                                min_obj = new_arr[i].obj;
                                new_arr[i].obj = new_arr[j].obj;
                                new_arr[j].obj = min_obj;
                            }
                        }
                    }
                    console.log("排序后new_arr:", new_arr);
    
    
                    // 增加 - 号
                    let newarr2 = [];
                    new_arr.forEach(function (item) {
                        let item1 = item.dt;
                        item1 = item1.toString();
                        console.log("item:", item1);
                        let temp;
                        let temp1 = item1.substring(0, 4);
                        let temp2 = item1.substring(4, 6);
                        let temp3 = item1.substring(6, 8);
    
                        temp = temp1.concat('-',temp2 , '-', temp3 );
                        console.log("temp:", temp);
                        newarr2.push({
                            zt: item.zt,
                            obj: item.obj,
                            dt: temp
                        })
                    });
    
                    console.log("2号新数组newarr2:", newarr2);
    
                    // 重新渲染
                    for (var i = 0; i < this.menu.length; i++) {
                        this.menu[i].dt = newarr2[i].dt;
                        this.menu[i].zt = newarr2[i].zt;
                        this.menu[i].obj = newarr2[i].obj;
                    }
                }
            }
        }
    
    </script>
    <style>
        .wrapper {
            width: 100%;
            height: 600upx;
            background-color: #F7F7F7;
        }
    
        .main {
            width: 800upx;
            height: 80upx;
            display: flex;
            flex: column;
        }
    
        .obj {
            width: 600upx;
            height: 60upx;
            background-color: #D9D9D9;
        }
    
        .zt {
            width: 200upx;
            height: 60upx;
            background-color: #D4D4D4;
        }
    </style>
    排序后结果如下: 







  • 相关阅读:
    外设简述
    代C语言上机实践
    css动画效果
    css滑动门原理
    css整理
    html
    html单词
    倒计时.js
    随机方块
    求字符串出现次数和最大值
  • 原文地址:https://www.cnblogs.com/zp106/p/10740715.html
Copyright © 2020-2023  润新知