如何根据两个属性对对象数组进行排序,并检查其顺序?

hec6srdp  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(230)

我有一个对象数组,其中的值具有范围,我希望根据范围对值进行排序。首先,它应该根据conditionalto进行排序,然后在ConditionalFrom到conditionalto的范围内进行排序。排列

[
{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 SlabDetails = orderBy(this.tableData, [r => r.conditionalTo - r.conditionalFrom, r => r.computationTo - r.computationFrom], "asc");
1zmg4dgp

1zmg4dgp1#

您可以使用 _.sortBy .

const
    sort = data => _.sortBy(data, [
        'conditionalFrom',
        'computationFrom',
        'computationTo'
    ]),
    data0 = [{ conditionalFrom: 0, conditionalTo: 10000, computationFrom: 0, computationTo: 1000 }, { conditionalFrom: 10001, conditionalTo: 10000000, computationFrom: 1001, computationTo: 100000 }, { conditionalFrom: 10001, conditionalTo: 999999999999, computationFrom: 0, computationTo: 1000 }],
    data1 = [{ 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 }];

console.log(sort(data0));
console.log(sort(data1));
.as-console-wrapper { max-height: 100% !important; top: 0; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>

相关问题