Javascript 基于多个值对数组进行排序
我正在尝试根据多个值对下面的数组进行排序,report_yr和report_qtr, 数组应先按年份排序,然后按季度排序(对于同一年) //输入阵列Javascript 基于多个值对数组进行排序,javascript,Javascript,我正在尝试根据多个值对下面的数组进行排序,report_yr和report_qtr, 数组应先按年份排序,然后按季度排序(对于同一年) //输入阵列 let arr = [{ report_yr: '2008', report_qtr: '1' }, { report_yr: '2019', report_qtr: '3' }, { report_yr: '2019', report_qtr: '4' }, { report_yr: '2017', report_
let arr = [{
report_yr: '2008',
report_qtr: '1'
},
{
report_yr: '2019',
report_qtr: '3'
},
{
report_yr: '2019',
report_qtr: '4'
},
{
report_yr: '2017',
report_qtr: '2'
},
{ report_yr: '2008',
report_qtr: '2'
}];
//预期产出:
[
{ report_yr: '2019',
report_qtr: '4' },
{ report_yr: '2019',
report_qtr: '3' },
{ report_yr: '2008',
report_qtr: '1'
},{ report_yr: '2008',
report_qtr: '2'
},
{ report_yr: '2017',
report_qtr: '2' } ];
//我正在尝试的是:
我试着用loadash的方法
_.sortBy(arr,
['report_yr', 'report_qtr']);
类似地,orderBy也尝试过,但到目前为止运气不佳。您可以使用
排序方法,并使用普通javascript来完成此操作
让arr=[{“报告年”:“2008”,“报告年”:“1”},{“报告年”:“2019”,“报告年”:“3”},{“报告年”:“2019”,“报告年”:“4”},{“报告年”:“2017”,“报告年”:“2”},{“报告年”:“2008”,“报告年”:“2”}]
arr.sort((a,b)=>b.report_yr-a.report_yr | b.report_qtr-a.report_qtr)
console.log(arr)
这可能适合您
data.sort(function (x, y) {
var n = y.report_qtr - x.report_qtr;
if (n !== 0) {
return n;
}
return y.report_yr- x.report_yr;
});
使用排序
方法
让arr=[{
2008年报告,
报告数量:“1”
},
{
报告年份:2019年,
报告数量:“3”
},
{
报告年份:2019年,
报告数量:“4”
},
{
报告年度:“2017年”,
报告数量:“2”
},
{报告"2008",,
报告数量:“2”
}]
arr.sort((b,a)=>+a.report_yr-+b.report_yr | |+a.report_qtr-+b.report_qtr)
console.log(arr)
如果您添加report\u yr
+report\u qtr
并按如下方式降序排序会怎么样
arr = arr.sort((a, b) => {
const one = parseInt(a.report_yr) + parseInt(a.report_qtr);
const two = parseInt(b.report_yr) + parseInt(b.report_qtr);
if (one > two) {
return -1
}
return 1;
});
使用.orderBy
而不是.sortBy
。如果不这样做,则无法按降序排序
这将对report\u qtr
进行降序排序和report\u yr
升序排序。我注意到你想要的输出与排序相矛盾
让arr=[{
2008年报告,
报告数量:“1”
}, {
报告年份:2019年,
报告数量:“3”
}, {
报告年份:2019年,
报告数量:“4”
}, {
报告年度:“2017年”,
报告数量:“2”
}, {
2008年报告,
报告数量:“2”
}];
let Sortedar=u.orderBy(arr,['report\u qtr','report\u yr'],['desc','asc']);
控制台日志(分拣机)代码>
。作为控制台包装器{
排名:0;
最大高度:100%!重要;
}
为什么当报告年份
为2018年
时,您的结果会随着报告年份
而上升,而当报告年份
为2019年
时,对象会下降?