搜尋

首頁  >  問答  >  主體

javascript - 物件進行排序

#如圖 我想根據 “1”,“99”,“23” 進行倒序;變成

NvTC

請問那位大神知道 謝謝

天蓬老师天蓬老师2764 天前476

全部回覆(5)我來回復

  • 巴扎黑

    巴扎黑2017-05-19 10:12:41

    Object中,以鍵=>值對存放數據,不存在順序問題

    回覆
    0
  • 天蓬老师

    天蓬老师2017-05-19 10:12:41

      1 var obj = {
      2     '1':{
      3         val:'red'
      4      },
      5      '99':{
      6         val:'yellow'
      7      },
      8      '37':{
      9         val:'blue'
     10      }
     11 };
     12
     13 function selirizeData(obj){
     14     var keys = Object.keys(obj).sort(function(a,b){
     15         return a-b;
     16     });
     17     var newObj = {};
     18     keys.forEach(function(val){
     19         newObj[val] = obj[val];
     20     });
     21     console.log(keys);
     22     console.log(newObj);
     23 }
     24 selirizeData(obj);

    先用Object.keys()取得物件的鍵數組,然後用數組的排序方法進行排序,再用數組的foreach方法循環下數組,將原始物件的資料排序後寫入到新的物件中。

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:12:41

    雷雷

    回覆
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-19 10:12:41

    JS的物件是 無序的。
    另外:
    {

    "11": "aaa"

    }
    裡面的 11 是字串。

    回覆
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-19 10:12:41

    思路:forin所有的keyArray,排序Array.sort(),遍历Array,按顺序取值obj[key]

        var keys = [];
        for (var i in obj) {
            keys.push(i);
        }
        keys.sort();
        for (var i = 0; i < keys.length; i++) {
            var key = keys[i];
            console.log(obj[key]);
        }

    回覆
    0
  • 取消回覆