Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按两种条件排序的对象数组_Javascript_Arrays_Sorting_Object - Fatal编程技术网

Javascript 按两种条件排序的对象数组

Javascript 按两种条件排序的对象数组,javascript,arrays,sorting,object,Javascript,Arrays,Sorting,Object,我有一个对象数组。我需要使用两个条件对其进行排序 [{ id: 412, start_date: 1488479400, status: 1 }, { id: 560, start_date: 1499451100, status: 0 }, { id: 112, start_date: 1499091200, status: 0 }, { id: 512, start_date: 1488474500, status: 1 }, { id: 750, start_date: 148347310

我有一个对象数组。我需要使用两个条件对其进行排序

[{
id: 412,
start_date: 1488479400,
status: 1
}, {
id: 560,
start_date: 1499451100,
status: 0
}, {
id: 112,
start_date: 1499091200,
status: 0
}, {
id: 512,
start_date: 1488474500,
status: 1
}, {
id: 750,
start_date: 1483473100,
status: 1
}, {
id: 123,
start_date: 1499106600,
status: 0
}, ]
我需要使用两个条件对其进行排序

[{
id: 412,
start_date: 1488479400,
status: 1
}, {
id: 560,
start_date: 1499451100,
status: 0
}, {
id: 112,
start_date: 1499091200,
status: 0
}, {
id: 512,
start_date: 1488474500,
status: 1
}, {
id: 750,
start_date: 1483473100,
status: 1
}, {
id: 123,
start_date: 1499106600,
status: 0
}, ]
  • 状态为1的所有对象都应排在第一位
  • 日期应按降序排列,即首先是最高日期 这是预期的输出

    [{
    id: 750,
    start_date: 1483473100,
    status: 1
    }, {
    id: 512,
    start_date: 1488474500,
    status: 1
    }, {
    id: 412,
    start_date: 1488479400,
    status: 1
    }, {
    id: 112,
    start_date: 1499091200,
    status: 0
    }, {
    id: 123,
    start_date: 1499106600,
    status: 0
    }, {
    id: 560,
    start_date: 1499451100,
    status: 0
    }, ]
    
    我所尝试的是遵循

    将数组分配给数据,然后

    data.sort(函数(a,b){返回a.start\u日期-b.start\u日期()})

    但它没有使用开始日期进行排序

    您可以使用和排序函数,并使用链式方法作为排序标准。你可以直接使用

    它通过评估第一个增量来工作,并检查vakue us truthy,即在这种情况下,该值小于1或大于1。如果该值为零,则两个状态值相等,并计算该时间的下一个增量。然后返回结果

    .as console wrapper{max height:100%!important;top:0;}
    对于排序条件,可以使用和一个带有链式方法的排序函数。你可以直接使用

    它通过评估第一个增量来工作,并检查vakue us truthy,即在这种情况下,该值小于1或大于1。如果该值为零,则两个状态值相等,并计算该时间的下一个增量。然后返回结果


    .as console wrapper{max height:100%!important;top:0;}
    b.start_date()
    它不是一个函数。日期的格式在你的小提琴中不一样(事实上,在你的小提琴中,它可能没有达到你的预期,因为
    01-01-2017
    没有引号的是数字-2017(1减1减2017).你的真实数据是否有你问题中所示的
    开始日期
    b.开始日期()
    它不是一个函数。日期的格式在你的小提琴中不一样(事实上,在你的小提琴中,它可能没有达到你的预期,因为
    01-01-2017
    没有引号的是数字-2017(1减1减2017)。您的真实数据是否具有如您的问题所示的
    开始日期
    ?很好地使用了
    |
    -我以前没有想过在排序函数中这样做。我认为您已经将主要排序向后进行了。(我怀疑OP也需要更多地解释它的工作原理。)仅供参考:
    状态:1
    似乎是代码中的最后一位,OP要求他们来first@haxxxton您可以简单地反转表达式,使状态1首先出现:b.status-a.status状态具有状态
    1
    的对象应该首先出现,然后
    0
    应该出现come@ifadey,我同意这很简单:)如果要将其标记为答案,我希望它符合OPNice使用
    |
    -之前我没有想过在排序函数中这样做。我认为您已经将主要排序向后进行了。(我怀疑OP也需要更多地解释它的工作原理。)仅供参考:
    状态:1
    似乎是代码中的最后一位,OP要求他们来first@haxxxton您可以简单地反转表达式,使状态1首先出现:b.status-a.status状态具有状态
    1
    的对象应该首先出现,然后
    0
    应该出现come@ifadey,我同意这很简单:)如果它被标记为答案,我希望它符合OP概述的标准