繁体   English   中英

如何根据每行的值范围对 object 数组进行排序?

[英]How to sort a array of object based on range of values from each row?

我有一个 object 数组,其中的值具有我想根据范围对值进行排序的范围。 首先,它应该根据 conditionalTo 进行排序,然后在有条件的 from 到 conditionalto 的范围内,它应该对计算进行排序。 请帮助stackblitz jsfiddle数组

[
    {conditionalFrom: 0, conditionalTo: 10000, computationFrom: 0, computationTo: 1000},
    {conditionalFrom: 10001, conditionalTo: 10000000, computationFrom: 1001, computationTo: 100000},
    {conditionalFrom: 10001, conditionalTo: 999999999999, computationFrom: 0, computationTo: 1000}
]

预期结果

[
    {conditionalFrom: 0, conditionalTo: 10000, computationFrom: 0, computationTo: 1000},
    {conditionalFrom: 10001, conditionalTo: 999999999999, computationFrom: 0, computationTo: 1000},
    {conditionalFrom: 10001, conditionalTo: 10000000, computationFrom: 1001, computationTo: 100000},
]

大批

[
    {conditionalFrom: 10001, conditionalTo: 10000000, computationFrom: 1001, computationTo: 100000},
    {conditionalFrom: 0, conditionalTo: 10000, computationFrom: 1001, computationTo: 100000},
    {conditionalFrom: 0, conditionalTo: 10000, computationFrom: 0, computationTo: 1000},
    {conditionalFrom: 10001, conditionalTo: 10000000, computationFrom: 0, computationTo: 1000},
]

预期结果

[
{conditionalFrom: 0, conditionalTo: 10000, computationFrom: 0, computationTo: 1000},
{conditionalFrom: 0, conditionalTo: 10000, computationFrom: 1001, computationTo: 100000},
{conditionalFrom: 10001, conditionalTo: 10000000, computationFrom: 0, computationTo: 1000},
{conditionalFrom: 10001, conditionalTo: 10000000, computationFrom: 1001, computationTo: 100000}
]

我正在使用 lodash 进行排序,但二级排序不起作用

const result = sortBy((sortBy(array, 'computationTo')), 'conditionalTo');

您可以自定义排序委托,例如:

arr.sort((a, b) => {
    let ret = a.conditionalTo - b.conditionalTo;
    if (ret !== 0)
        return ret;
    return a.conditionalFrom - b.conditionalFrom;
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM