如何根据两个属性对对象数组进行排序,并检查范围是否连续?
我有一个对象数组,其中的值具有范围,我希望根据范围对值进行排序。首先,它应该基于ConditionalTo进行排序,然后在Conditional From to ConditionalTo范围内,它应该对cultationTo进行排序。 数组
[
{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}
]
在两种情况下使用loaash但输出都不正确
const SlabDetails = orderBy(this.tableData, [r => r.conditionalTo - r.conditionalFrom, r => r.computationTo - r.computationFrom], "asc");
解决方案
您可以使用_.sortBy
指定wnated属性。
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>
相关文章