JavaScripts Object.keys() out of order solution

Solution to JavaScript Object.keys() disordered order

When the key is an integer, it will be sorted from small to large (dictionary default sorting method)

When the key is a non-integer/or string: the internal order is sorted according to the creation time of the key object

let dict = {
    
    
    'a' : '1',
    'b' : '1',
    'd' : '1'
}
Object.keys(dict) --->   ['a','b','c']
let dict = {
    
       
    1 : '1',  //按照字典默认会 从小到大 降序排序
    2 : '1',
    3 : '1'
}
Object.keys(dict) --->   [1,2,3]  //因为key是从小到大  所以排序一致

// ----------------------------------------------------------------

let dict = {
    
       
    3 : '1',  
    1 : '1',
    2 : '1'
}
Object.keys(dict) --->   [1,2,3]  //整数key 从小到大排序
#  当key是非整数 / 或字符串时 :  内部顺序按照key对象创建时间来排序   解释
let obj = {
    
    
   '3.1' :1,
   '1.1': 1,
   '2.1':1,
   '4.1':1
}
Object.keys(obj)                         --->  [3.1,1.1,2.1,4.1]  //不会排序     根据obj2 key的创建时间来排序   
Object.keys(Object.keys(obj2).sort())   ---->  [1.1,2.1,3.1,4.1]  //会排序      根据key 排序

Sorting process (ascending order)

        let obj4 = {
    
    
            3.13: "c",
            51.15: "e",
            2000.12: "b",
            41.14: "d",
            100.11: "a"
        };

        // 1. 获取字典对象的所有键
        let keys = Object.keys(obj4);


        // 2. 按照数值大小对键数组进行排序
        keys.sort((a, b) => a - b);


        // 3. 遍历排好序的键数组,创建一个新的有序字典对象
        let sortedObj = {
    
    };
        for (let key of keys) {
    
    
            sortedObj[key] = obj4[key];
        }

        //--------------------------------------
        let keys2 = Object.keys(obj4);
        keys2.sort((a, b) => b - a);
        let sortedObj2 = {
    
    };
        for (let key of keys2) {
    
    
            sortedObj2[key] = obj4[key];
        }
        //--------------------------------------
        console.log(obj4);
        console.log("降序", sortedObj);
        console.log("升序", sortedObj2);

complete example

 console.log("------------2位小数---(单双引号效果一致)--------");
        let obj = {
    
    
            "3.13": "c",
            "5000.15": "e",
            "200.12": "b",
            "400.14": "d",
            '10000.11': "a"
        }
        console.log(obj);
        console.log("原key", Object.keys(obj));
        console.log("升序 key", Object.keys(obj).sort((a, b) => a - b));
        console.log("降序 key", Object.keys(obj).sort((a, b) => b - a));

        // 使用 自动排序后的键,取对应值,即可完成 k-v型排序(key为浮点数需要sort方法,为整数不需要sort方法)   
        console.log("------------排序结果-----降序----前3----");
        for (let x = 0; x < Object.keys(obj).sort((a, b) => b - a).length; x++) {
    
    
            if (x == 3) {
    
     break } // 控制取几个
            console.log(Object.keys(obj).sort((a, b) => b - a)[x] + "--------" + obj[Object.keys(obj).sort((a, b) => b - a)[x]]);
        }

        console.log("------------排序结果-----升序---前3-----");
        for (let x = 0; x < Object.keys(obj).sort((a, b) => a - b).length; x++) {
    
    
            if (x == 3) {
    
     break } // 控制取几个
            console.log(Object.keys(obj).sort((a, b) => a - b)[x] + "--------" + obj[Object.keys(obj).sort((a, b) => a - b)[x]]);
        }

example

Supongo que te gusta

Origin blog.csdn.net/qq_46273065/article/details/129182939
Recomendado
Clasificación