Rumah  >  Soal Jawab  >  teks badan

javascript - json排序的问题

想在下面这个json对象上实现:
1.末尾添加一组数据"事件4":{"排序":4};
2.按照"排序"的值排序.

var myObj = {
    "事件2": {
        "排序": 2
    },
    "事件3": {
        "排序": 3
    },
    "事件1": {
        "排序": 1
    }
};

ps:这是分开的两个功能,不要写一起!

黄舟黄舟2772 hari yang lalu534

membalas semua(2)saya akan balas

  • 阿神

    阿神2017-04-10 18:00:53

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式, 并不存在一种对象叫"JSON对象", 有的只是Javascript对象, 也就是看上去是这种键值对的形式的

    不过Javascript对象是无序的, 所以你现在说排序可能是个伪命题, 也许你需要把你的问题改成, 期望按照那个"排序"的值进行输出, 那就还是有希望的


    至于要加个值, 很简答:

    var myobj = {
        "事件2": {
            "排序": 2
        },
        "事件3": {
            "排序": 3
        },
        "事件1": {
            "排序": 1
        }
    };
    myobj['事件4'] = {
        'hello': 'world'
    }

    balas
    0
  • 大家讲道理

    大家讲道理2017-04-10 18:00:53

    为了在浏览器上按照排序的值依次渲染,最好还是先将Object转为一个Array,后续的sort和add按照新的数据结构添加就好了。

    var source = {
        "事件2": {
            "排序": 2
        },
        "事件3": {
            "排序": 3
        },
        "事件1": {
            "排序": 1
        }
    };
    
    var sorted = (function sort(source){
        return Object.keys(source).map(function(key){
            return {
                event:key,
                order:source[key]['排序'],
            }
        }).sort(function(a,b){
            return a.order - b.order;
        });
    })(source);
    
    /**
    [
        {
            "event": "事件1",
            "order": 1
        },
        {
            "event": "事件2",
            "order": 2
        },
        {
            "event": "事件3",
            "order": 3
        }
    ]
    */
    

    balas
    0
  • Batalbalas