首页 > 解决方案 > 对满足阈值的对象进行排序

问题描述

我有一个由数据库返回的对象数组,我试图在这些对象上运行 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;

标签: javascript

解决方案


简化您的问题并首先过滤掉您不感兴趣的元素,例如:

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;

干得好 !


推荐阅读