小白前端,不懂就问,如何自定义数组内汉字的排序 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ChengNaNA
V2EX    Vue.js

小白前端,不懂就问,如何自定义数组内汉字的排序

  •  
  •   ChengNaNA 2019-10-16 09:39:31 +08:00 5826 次点击

    接口获取一个数组,类似这样

    List:[ { 0:{number:1,name:'四赵日天'} 1:{number:2,name:'二赵日天'} 2:{number:3,name:'八赵日天'} } ] 

    然后通过这样的方法把 name 提取到 NewList 数组里面

    let NewList= []; for (let item of this.List){ NewList.push(item.name) } 

    提取后的 NewList 中的 name 排序是这样的:

    NewList:{ 0:'四赵日天', 1:'二赵日天', 2:'八赵日天' } 

    求问 vue 中要怎么做处理才能让它自定义排序,像这样排序?

    NewList:{ 0:'二赵日天', 1:'四赵日天', 2:'八赵日天' } 

    求大佬们解答,先谢谢大佬们了!

    11 条回复    2019-10-16 11:38:31 +08:00
    Marstin
        1
    Marstin  
       2019-10-16 09:48:00 +08:00   1
    最简单的就是冒泡啊。
    但是你这排序规则怎么定义呢,取前几位字符,汉字转阿拉伯数字,再根据阿拉伯数字排序?
    Zach369
        2
    Zach369  
       2019-10-16 09:49:49 +08:00   1
    没有太简单的方法. 做一个 1 对应一,2 对应二,以此类推的 map.然后转换下.就可以了
    zhuzhibin
        3
    zhuzhibin  
       2019-10-16 09:56:21 +08:00 via iPhone
    最重要的是排序规则吧
    zhw2590582
        4
    zhw2590582  
       2019-10-16 10:06:50 +08:00   2
    ```js
    const NewList = ['四赵日天', '二赵日天', '八赵日天'];
    const arr = ['一', '二', '三', '四', '五', '六', '七', '八', '九']
    const list = NewList.sort((a, b) => arr.indexOf(a[0]) - arr.indexOf(b[0]))
    ```
    shuichengjian
        5
    shuichengjian  
       2019-10-16 10:08:07 +08:00
    汉字转拼音 ,再排序吧。
    ceet
        6
    ceet  
       2019-10-16 10:12:52 +08:00   1
    我们可以对任何对象类型的数组排序,比如,对象 Person 有名字和年龄属性,我们希望根据年龄排序,那么我们可以这么写:

    const friends=[
    {name:'john',age:30},
    {name:"lily",age:20},
    {name:"merry",age:24},
    ];
    function comparePerson(property){
    return function(a,b){
    if(a[property] < b[property]){
    return -1;
    }
    if(a[property] > b[property]){
    return 1;
    }
    return 0;
    }
    }
    console.log(friends.sort(comparePerson('age')));


    这是最简单的根据年龄 age 排序,如果要排序的字段里面包含汉字或者英文字母要怎么排呢,我们可以这么写:

    let data = [
    {chinese: '蔡司', english: 'Chase'},
    {chinese: '艾伦', english: 'Allen'},
    {chinese: '左拉', english: 'Zola'},
    {chinese: '贝克', english: 'Baker'},
    {chinese: '伯格', english: 'Berg'},
    {chinese: '菲奇', english: 'Fitch'},
    {chinese: '迪安', english: 'Dean'},
    {chinese: '厄尔', english: 'Earle'},
    {chinese: '亨利', english: 'Henry'},
    ];

    //根据汉字首字母排序
    //使用箭头函数
    // [注] localeCompare() 是 js 内置方法
    // data.sort((a, b)=> b.chinese.localeCompare(a.chinese, 'zh')); //z~a 排序
    // data.sort((a, b)=> a.chinese.localeCompare(b.chinese, 'zh')); //a~z 排序
    // console.log(data);

    //根据英文排序 比较 首字母 ASCLL 码
    // console.log(data[0].english.charCodeAt(0));
    // data.sort((a, b) => b.english.charCodeAt(0) - a.english.charCodeAt(0)); //z~a 排序
    data.sort((a, b) => a.english.charCodeAt(0) - b.english.charCodeAt(0)); //a~z 排序

    console.log(data);
    DrugsZ
        8
    DrugsZ  
       2019-10-16 10:28:52 +08:00
    都不如存的时候前面用阿拉伯数字标志数字,展示的时候把阿拉伯数字切掉省心
    ChengNaNA
        10
    ChengNaNA  
    OP
       2019-10-16 11:03:32 +08:00
    @zhw2590582 谢谢大佬了,参考这个方法解决了[]~( ̄ ̄)~
    FantasyPupil
        11
    FantasyPupil  
    &bsp;  2019-10-16 11:38:31 +08:00
    取首字母,或者根据字符长度进行排序。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2557 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 15:04 PVG 23:04 LAX 08:04 JFK 11:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86