• 同花顺笔试碰到的一道前端编程题


    题目要求:给出一个对象值,里面含有很多个子对象,每个字对象又分别含有name 、score 、time属性。最后要求设计一个方法,按时间从小到大排序输出每个分数大于60分的人的姓名和对应分数。

    输入对象举例如下:

    {
        A:{
            name: 'aaa',
            score: 60,
            time: 'Mon May 16 2016 18:48:34 GMT+0800 (中国标准时间)'
        },
        B:{
            name: 'bbb',
            score: 50,
            time: 'Mon May 16 2017 18:48:34 GMT+0800 (中国标准时间)'
        },
        C:{
            name: 'ccc',
            score: 90,
            time: 'Mon May 16 2018 18:48:34 GMT+0800 (中国标准时间)'
        },
        D:{
            name: 'ddd',
            score: 80,
            time: 'Mon May 16 2014 18:48:34 GMT+0800 (中国标准时间)'
        },
        E:{
            name: 'eee',
            score: 81,
            time: 'Mon May 15 2014 18:48:34 GMT+0800 (中国标准时间)'
        },
        F:{
            name: 'fff',
            score: 81,
            time: 'Mon May 15 2016 18:48:34 GMT+0800 (中国标准时间)'
        }
        ...
    }

    方法1思路:先将分数为60分及以下的子对象去掉,剩下的子对象再根据时间值得大小进行排序。注意,时间值需要通过Date.parse()方法转换成毫秒数才能比较。

    function objSort(obj){
        var arr = Object.keys(obj);
        var subArr = [];
        arr.forEach(function(item){
            if(obj[item].score>60){
                subArr.push(obj[item]);
            }
        });
        // console.log(subArr); 
        var res = subArr.sort(function(obj1, obj2){
            return Date.parse(obj1.time) - Date.parse(obj2.time);
        });
        // console.log(res);
        for(var i=0; i<res.length; i++){
            console.log(res[i].name + ' ' + res[i].score);
        }
    }
    var object = {
        A:{
            name: 'aaa',
            score: 60,
            time: 'Mon May 16 2016 18:48:34 GMT+0800 (中国标准时间)'
        },
        B:{
            name: 'bbb',
            score: 50,
            time: 'Mon May 16 2017 18:48:34 GMT+0800 (中国标准时间)'
        },
        C:{
            name: 'ccc',
            score: 90,
            time: 'Mon May 16 2018 18:48:34 GMT+0800 (中国标准时间)'
        },
        D:{
            name: 'ddd',
            score: 80,
            time: 'Mon May 16 2014 18:48:34 GMT+0800 (中国标准时间)'
        },
        E:{
            name: 'eee',
            score: 81,
            time: 'Mon May 15 2014 18:48:34 GMT+0800 (中国标准时间)'
        },
        F:{
            name: 'fff',
            score: 81,
            time: 'Mon May 15 2016 18:48:34 GMT+0800 (中国标准时间)'
        }
    }
    objSort(object);
    // eee 81
    // ddd 80
    // fff 81
    // ccc 90

     方法2:直接通过time属性进行排序

    function objSort(params){
        return function(object1,object2){
            return Date.parse(object1[params])-Date.parse(object2[params]);
        }
    }
    function init(obj){
        var arr = [];
        for(item in obj){
            if(parseInt(obj[item].score)>60){
                arr.push(obj[item]);
            }
        }
        arr.sort(objSort('time'));
        for(var i=0; i<arr.length; i++){
            console.log(arr[i].name + ' ' + arr[i].score);
        }
    }
    var object = {
        A:{
            name: 'aaa',
            score: 60,
            time: 'Mon May 16 2016 18:48:34 GMT+0800 (中国标准时间)'
        },
        B:{
            name: 'bbb',
            score: 50,
            time: 'Mon May 16 2017 18:48:34 GMT+0800 (中国标准时间)'
        },
        C:{
            name: 'ccc',
            score: 90,
            time: 'Mon May 16 2018 18:48:34 GMT+0800 (中国标准时间)'
        },
        D:{
            name: 'ddd',
            score: 80,
            time: 'Mon May 16 2014 18:48:34 GMT+0800 (中国标准时间)'
        },
        E:{
            name: 'eee',
            score: 81,
            time: 'Mon May 15 2014 18:48:34 GMT+0800 (中国标准时间)'
        },
        F:{
            name: 'fff',
            score: 81,
            time: 'Mon May 15 2016 18:48:34 GMT+0800 (中国标准时间)'
        }
    }
    init(object);
  • 相关阅读:
    C#类型转换
    C#面向对象之多态
    C#面向对象之继承
    C#各种字段类型对比
    C#关键字:static
    C#面向对象之封装
    C#关键字:访问修饰符
    C#类型成员:构造函数
    C#类型成员:方法
    C#类类型
  • 原文地址:https://www.cnblogs.com/guorange/p/7598377.html
Copyright © 2020-2023  润新知