Search This Blog

2022/06/22

JS: Sort array by datetime, number/ filter by key

const list = [

        {

            "id": "1",

            "createdDate": "2022/03/24 09:49",

            "count": 15,

            "type": 1,

            "title": "テスト",

            "uploader": "アップロード",

        },

        {

            "id": "7",

            "createdDate": "2022/06/17 11:34",

            "count": 5,

            "type": 3,

            "title": "テスト",

            "uploader": "アップロード",

        },

        {

            "id": "3",

            "createdDate": "2022/06/17 11:00",

            "count": 15,

            "type": 1,

            "title": "テスト",

            "uploader": "アップロード2",

        },

        {

            "id": "31",

            "createdDate": "2022/06/17 12:00",

            "count": 1,

            "type": 2,

            "title": "テスト",

            "uploader": "アップロード2",

        },

    ];


const result = list.find(x => x. id == "3");

const result2 = list.filter(x => x. type == "3");

const result3 = list.filter(x => x. uploader.toUpperCase().includes("アップロード2"));

// new sort(from new to old)

const result4 = list.sort(function(a,b){

                    return new Date(b.createdDate) - new Date(a.createdDate);

                });

// old sort(from old to new)

const result5 = list.sort(function(a,b){

                    return new Date(a.createdDate) - new Date(b.createdDate);

                });

// asc

const result6 = list.sort(function(a,b){

                    return b.relatedCount - a.relatedCount;

                });

// less

const result6 = list.sort(function(a,b){

                    return a.relatedCount - b.relatedCount;

                });



if array is object Array, error will happened as below.

TypeError: Cannot assign to read only property '0' of object '[object Array]'

need to make a copy of the array before sort.

arrayForSort = [...list]