json排序的问题

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

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

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

阅读 3.2k
2 个回答

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

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


至于要加个值, 很简答:

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

为了在浏览器上按照排序的值依次渲染,最好还是先将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
    }
]
*/
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题