2

我想根据特定逻辑对数据进行排序。

订购规则如下:

  1. 类型:实际。
  2. 类型:预计。

这是我的代码:

const myData = [{
    "id": 1,
    "businessEntityId": "BE001",
    "financials": {
      "Npbt": 2323,
      "Interest": 123213,
      "Depreciation": 213123,
      "Ebit": 1312321,
      "EbitDa": 123123,
      "Leasing": 123213
    },
    "type": "Actual",
    "startDate": "2018-06-15T00:00:00.000Z",
    "endDate": "2018-06-15T00:00:00.000Z",
    "model": "Commercial",
    "duration": 12,
    "quality": "Unqualified"
  },
  {
    "id": 2,
    "businessEntityId": "BE002",
    "financials": {
      "Npbt": 2323,
      "Interest": 123213,
      "Depreciation": 213123,
      "Ebit": 1312321,
      "EbitDa": 123123,
      "Leasing": 123213
    },
    "type": "Projected",
    "startDate": "2017-06-15T00:00:00.000Z",
    "endDate": "2017-06-15T00:00:00.000Z",
    "model": "Commercial",
    "duration": 12,
    "quality": "Projection"
  },
  {
    "id": 3,
    "businessEntityId": "BE002",
    "financials": {
      "Npbt": 2323,
      "Interest": 123213,
      "Depreciation": 213123,
      "Ebit": 1312321,
      "EbitDa": 123123,
      "Leasing": 123213
    },
    "type": "Actual",
    "startDate": "2017-06-15T00:00:00.000Z",
    "endDate": "2017-06-15T00:00:00.000Z",
    "model": "Commercial",
    "duration": 12,
    "quality": "Audited"
  }

]

var order = {
  model: {
    Commercial: 2,
    Agribusiness: 1
  },
  type: {
    Historical: 3,
    Actual: 2,
    Projected: 1,
    Proforma: 0
  },
  Actual: {
    Unqualified: 3,
    Qualified: 2,
    Audited: 1
  },
  Projected: {
    Projection: 3,
    Qualified: 2,
    Audited: 1
  },
  BOTTOM: Infinity
};

let result = myData.sort(
  (a, b) => {
    // eslint-disable-next-line no-unused-expressions
    return order.model[a.model] - order.model[b.model] || order.type[a.type] - order.type[b.type]
  }
);

console.log(result.map((obj) => obj.id))

因此,当我运行 sort 时,结果当前是(检查控制台以获取反应应用程序/结果):

id 1, id 2, id 3.

我期待:1,3,2
我怎样才能按照这些规则对 Type 进行排序并type='Projected'放在底部?

4

0 回答 0