Javascript 解析来自服务器的JSON并重新排序

Javascript 解析来自服务器的JSON并重新排序,javascript,jquery,json,Javascript,Jquery,Json,我调用一个API并输出一个JSON(见下文)。我可以通过使用AJAX进行解析。我想知道我怎么能 根据日期对数据重新排序(首先是最新的),然后 只显示前三个 JSON输出 { "beds": { "casper": { "name": "angel", "description": "lorem ipsum", "orderDate": "09/20/2018" }, "

我调用一个API并输出一个JSON(见下文)。我可以通过使用AJAX进行解析。我想知道我怎么能

  • 根据日期对数据重新排序(首先是最新的),然后
  • 只显示前三个
  • JSON输出

    {
        "beds": {
            "casper": {
                "name": "angel",
                "description": "lorem ipsum",
                "orderDate": "09/20/2018"
            },
            "tuft": {
                "name": "relax",
                "description": "lorem ipsum",
                "orderDate": "05/12/2018"
            },
            "saatva": {
                "name": "heaven",
                "description": "lorem ipsum",
                "orderDate": "07/03/2018"
            },
            "dream": {
                "name": "sweet",
                "description": "lorem ipsum",
                "orderDate": "04/28/2018"
            },
            "rocky": {
                "name": "painful",
                "description": "lorem ipsum",
                "orderDate": "02/15/2018"
            }
        }
    }
    
    这是我在AJAX成功后的代码

    $.ajax({
        ...
        ...
        ...
        success: function(result) {
    
            $('.container-for-beds').each(function(i) {
    
                $(this).prepend(
                    '<div class="bedBrand"><p>' + result.beds[i].name + '</p><p>' + result.beds[i].description + '</p><p>' + result.beds[i].orderDate + '</p></div>'
                );
    
            });
    
        }
    });
    
    $.ajax({
    ...
    ...
    ...
    成功:功能(结果){
    $('.container for beds')。每个(函数(i){
    $(此)。预结束(
    “”+result.beds[i].名称+”

    '+result.beds[i].说明+”

    '+result.beds[i].订单日期+”

    ' ); }); } });
    如果一切顺利,HTML应该看起来像

    <div class="container-for-beds">
        <div class="bedBrand">
            <p>heaven by saatva</p>
            <p>lorem ipsum</p>
            <p>07/03/2018</p>
        </div>
        <div class="bedBrand">
            <p>relax by tuft</p>
            <p>lorem ipsum</p>
            <p>05/12/2018</p>
        </div>
        <div class="bedBrand">
            <p>angel by casper</p>
            <p>lorem ipsum</p>
            <p>04/20/2018</p>
        </div>
    </div>
    
    
    萨特瓦天堂酒店

    同侧眼睑

    2018年3月7日

    松一口气

    同侧眼睑

    2018年5月12日

    凯斯珀的天使

    同侧眼睑

    2018年4月20日

    感谢您的洞察力

    我可以通过使用AJAX进行解析

    ajax的目标是进行异步调用,它可能不进行
    解析

    其次,js对象中键的顺序没有保证。话虽如此,您可以从这个对象创建一个新数组,并根据日期对数组进行排序。使用
    slice
    方法获取前三个对象

    var数据={
    “床位”:{
    “卡斯珀”:{
    “姓名”:“天使”,
    “描述”:“lorem ipsum”,
    “订单日期”:“2018年9月20日”
    },
    “簇”:{
    “姓名”:“放松”,
    “描述”:“lorem ipsum”,
    “订单日期”:“2018年5月12日”
    },
    “萨特瓦”:{
    “名字”:“天堂”,
    “描述”:“lorem ipsum”,
    “订单日期”:“2018年3月7日”
    },
    “梦想”:{
    “姓名”:“甜蜜”,
    “描述”:“lorem ipsum”,
    “订单日期”:“2018年4月28日”
    },
    “洛奇”:{
    “名字”:“痛苦”,
    “描述”:“lorem ipsum”,
    “订单日期”:“2018年2月15日”
    }
    }
    };
    var createArray=[];
    //使用for..in循环对象
    用于(数据中的键。床){
    var currentKey=data.beds[keys];
    //将嵌套对象键名称添加为属性
    currentKey.parent=密钥;
    //{“名称”:“天使”,“描述”:“lorem ipsum”,“订单日期”:“09/20/2018”,“家长”:“casper”}
    createArray.push(currentKey)
    }
    var sortedByDate=createArray.sort(函数(a,b){
    //根据日期排序,它将按升序排序
    //更改为新日期(b.orderDate)-新日期(b.orderDate)
    //降序
    返回新日期(a.orderDate)-新日期(b.orderDate)
    }).切片(0,3)
    
    console.log(sortedByDate)
    您是否尝试过自己编写代码?请发布它,以便我们可以查看它并帮助调试。也许您需要将结果推送到另一个数组中并进行排序