recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment implémenter cet ensemble de données pour les classer et les afficher par liste alphabétique sans modifier la structure des données

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<code>var data = [{

    "name": "涡阳",

    "pinyin": "WoYang"

}, {

    "name": "邳州",

    "pinyin": "PiZhou"

}, {

    "name": "玉溪",

    "pinyin": "YuXi"

}, {

    "name": "无锡",

    "pinyin": "WuXi"

}, {

    "name": "萍乡",

    "pinyin": "PingXiang"

}];</code>

Catégorie selon les lettres A B C...liste
telles que

1

2

3

4

5

6

7

8

9

10

<code>P->

     {

    "name": "萍乡",

    "pinyin": "PingXiang"

    },

     {

    "name": "邳州",

    "pinyin": "PiZhou"

    }

 </code>

Description du lien similaire

Comment exploiter cet ensemble de données. .

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<code>我的代码,比较渣 求更优雅的写法

function jsfu(data) {

   var obj={}

    data.map(function(item, index) {

        let codeIndex = item.pinyin.charAt(0)

        if (!obj[codeIndex]) {

            obj[codeIndex] = {

                item: []

            }

        }

      obj[codeIndex].item.push(item)

    })

    return obj

}</code>

Comment trier, j'ai trouvé que la page n'est pas ordonnée, c'est la caractéristique désordonnée des objets js !

给我你的怀抱给我你的怀抱2866 Il y a quelques jours642

répondre à tous(2)je répondrai

  • 黄舟

    黄舟2017-05-24 11:38:52

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    <code>function jsfu(data) {

        var map = {}

          , arr = []

          , dest = []

        for (let i = 0; i < data.length; i++) {

            arr.push({

                code: data[i].pinyin.charAt(0),

                item: data[i]

            })

        }

        for (let i = 0; i < arr.length; i++) {

            if (!map[arr[i].code]) {

                dest.push({

                    code: arr[i].code,

                    item: [arr[i].item]

                })

                map[arr[i].code] = arr[i].code

            } else {

                for (let j = 0; j < dest.length; j++) {

                    if (dest[j].code == arr[i].code) {

                        dest[j].item.push(arr[i].item);

                        break;

                    }

                }

            }

        }

        //排序

        dest.sort(function(a, b) {

            if (a.code > b.code) {

                return 1;

            }

            if (a.code < b.code) {

                return -1;

            }

            return 0;

        })

        return dest

    }

    jsfu(data)</code>

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    <code>[

        {

            "code": "P",

            "item": [

                {

                    "name": "邳州",

                    "pinyin": "PiZhou"

                },

                {

                    "name": "萍乡",

                    "pinyin": "PingXiang"

                }

            ]

        },

        {

            "code": "W",

            "item": [

                {

                    "name": "涡阳",

                    "pinyin": "WoYang"

                },

                {

                    "name": "无锡",

                    "pinyin": "WuXi"

                }

            ]

        },

        {

            "code": "Y",

            "item": [

                {

                    "name": "玉溪",

                    "pinyin": "YuXi"

                }

            ]

        }

    ]</code>

    répondre
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-24 11:38:52

    1

    2

    3

    4

    <code>data = data.sort(function(a, b) {

        return a.pinyin[0].localeCompare(b.pinyin[0])

    })

    console.log(JSON.stringify(data))</code>

    répondre
    0
  • Annulerrépondre