javascript - 对满足阈值的对象进行排序
问题描述
我有一个由数据库返回的对象数组,我试图在这些对象上运行 sort()。
[{
PER_ID: 5511,
DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG: '353',
DEAL_COUNT_PRESENTED: 118,
},
{
PER_ID: 5016,
DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG: '372',
DEAL_COUNT_PRESENTED: 109,
},{
PER_ID: 4181,
DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG: '359',
DEAL_COUNT_PRESENTED: 73,
},
{
PER_ID: 5016,
DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG: '372',
DEAL_COUNT_PRESENTED: 109,
},{
PER_ID: 158,
DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG: '370',
DEAL_COUNT_PRESENTED: 1112,
}]
我想获取 DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG 值最低的对象的 PER_ID 值,其中 DEAL_COUNT_PRESENTED >= 10。
我的代码是:
per_recs = per_recs.sort(function (prior, curr) {
return ((curr.DEAL_COUNT_PRESENTED >= 10 && (prior.DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG - curr.DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG > 0) ? 1 : 0));
});
let per_id_with_lowest_deal_time_to_present_mins_biz_avg = per_recs[0].PER_ID;
解决方案
简化您的问题并首先过滤掉您不感兴趣的元素,例如:
const items = [{
PER_ID: 5511,
DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG: '353',
DEAL_COUNT_PRESENTED: 118,
},
{
PER_ID: 5016,
DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG: '372',
DEAL_COUNT_PRESENTED: 109,
},{
PER_ID: 4181,
DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG: '359',
DEAL_COUNT_PRESENTED: 9,
},
{
PER_ID: 5016,
DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG: '372',
DEAL_COUNT_PRESENTED: 109,
},{
PER_ID: 158,
DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG: '370',
DEAL_COUNT_PRESENTED: 1112,
}]
const sortedItems = items
.filter(item => item.DEAL_COUNT_PRESENTED >= 10)
.sort((a, b) => {
return +a.DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG - +b.DEAL_TIME_TO_PRESENT_MINS_BIZ_AVG
})
let foundItem = sortedItems[0].PER_ID;
干得好 !
推荐阅读
- c++ - 为什么我的文件通过 fstream::read 在另一台具有类似硬件的计算机上读取速度很慢?
- ios - Swift:无主引用
- html - 导航栏和不同区域中的html Bootstrap 4页面空白
- reactjs - React Router 渲染 404 Not Found on reload
- android - 如何在我的 Btn 点击事件中调用另一个类的变量
- sas - 您如何比较在 SAS 中具有部分共同键的观察结果?(ic同一个家庭,不同的孩子)
- python - 根据一个字符串找到许多数字的总和
- android-espresso - androidTest 执行失败,并在 android studio 中出现错误消息“未找到模拟器”
- react-admin - 在哪里检查令牌过期和发送刷新请求
- mockito - 窥探线程对象后,thread.start()、thread.join() 不起作用。