Javascript 考虑到不同的货币(欧元和英镑),我应该如何对价格列表进行排序?

Javascript 考虑到不同的货币(欧元和英镑),我应该如何对价格列表进行排序?,javascript,html,angularjs,angular-filters,Javascript,Html,Angularjs,Angular Filters,我有一个关于种族的列表,钱包是欧元和英镑,考虑到货币,我需要按钱包订购。例如:1.9万英镑排名第一,1.9万欧元排名第二,因为GB比欧元更有价值 那是我的Json vm.races = [ {id:1, country: 'United Kingdom', flag: 'flag-gb', cities:[{name:'Fontwell', race_type:'J', start_time: '09:55', purse:'26.000', currency: 'GBP'}, {nam

我有一个关于种族的列表,钱包是欧元和英镑,考虑到货币,我需要按钱包订购。例如:1.9万英镑排名第一,1.9万欧元排名第二,因为GB比欧元更有价值

那是我的Json

vm.races = [
    {id:1, country: 'United Kingdom', flag: 'flag-gb', cities:[{name:'Fontwell', race_type:'J', start_time: '09:55', purse:'26.000', currency: 'GBP'}, {name:'Hereford', race_type:'J', start_time: '5m', purse:'35.000', currency: 'EUR'}, {name:'Wolverhampton',race_type:'G', start_time: '10:50', purse:'32.000', currency: 'EUR'}]},
    {id:2, country: 'South Africa', flag: 'flag-za', cities:[{name:'Flamingo Park', race_type:'G', start_time: '10:35', purse:'10.000', currency: 'EUR'}]},
    {id:3, country: 'France', flag: 'flag-fr', cities:[{name:'Melton PMU', race_type:'T', start_time: '11:15', purse:'25.000', currency: 'EUR'}, {name:'Pau', race_type:'J', start_time: '08:50', purse:'33.000', currency: 'EUR'}, {name:'Vincennes', race_type:'T', start_time: 'Due', purse:'29.000', currency: 'EUR'}, {name:'Marseilles', race_type:'G', start_time: '09:20', purse:'38.000', currency: 'EUR'}, {name:'Toulouse', race_type:'T', start_time: '09:00', purse:'35.000', currency: 'EUR'}]},
    {id:4, country: 'Sweden', flag: 'flag-se', cities:[{name:'Gävle', race_type:'T', start_time: '10:45', purse:'22.000', currency: 'EUR'}, {name:'Axevalla', race_type:'T', start_time: 'Due', purse:'37.000', currency: 'EUR'}]},
    {id:5, country: 'Norway', flag: 'flag-no', cities:[,{name:'Leangen', race_type:'T', start_time: '09:05', purse:'12.000', currency: 'EUR'}, {name:'Leangen', race_type:'T', start_time: '09:05', purse:'12.000', currency: 'GBP'}]},
    {id:6, country: 'Australia', flag: 'flag-au', cities:[{name:'Melton', race_type:'T', start_time: '10:15', purse:'42.600', currency: 'EUR'}]},
    {id:7, country: 'Brazil', flag: 'flag-br', cities:[{name:'Blumenau', race_type:'D', start_time: '11:40', purse:'15.000', currency: 'EUR'}]}
    ]
这是我的HTML:

<li class="list-group-item" ng-repeat="city in race.cities | orderBy: '-realPurse' | filter: vm.filter">

这将按转换后的钱包对城市进行排序,然后按排名靠前的城市对比赛进行排序

races.map((race) => {
  race.cities = race.cities.sort((a, b) => {
    a = a.currency === 'EUR' ? a.purse : a.purse * 1.13
    b = b.currency === 'EUR' ? b.purse : b.purse * 1.13

    return b - a
  })

  return race
})
.sort((a, b) => {
  a = a.cities[0].currency === 'EUR' ? a.cities[0].purse : a.cities[0].purse * 1.13
  b = b.cities[0].currency === 'EUR' ? b.cities[0].purse : b.cities[0].purse * 1.13

  return b - a
})
我得到的结果是:

{id: 6, country: "Australia", flag: "flag-au", cities: Array}
{id: 3, country: "France", flag: "flag-fr", cities: Array}
{id: 4, country: "Sweden", flag: "flag-se", cities: Array}
{id: 1, country: "United Kingdom", flag: "flag-gb", cities: Array}
{id: 7, country: "Brazil", flag: "flag-br", cities: Array}
{id: 5, country: "Norway", flag: "flag-no", cities: Array}
{id: 2, country: "South Africa", flag: "flag-za", cities: Array}
一些城市分类如下:

// Race 3, France
{name: "Marseilles", race_type: "G", start_time: "09:20", purse: "38.000", currency: "EUR"}
{name: "Toulouse", race_type: "T", start_time: "09:00", purse: "35.000", currency: "EUR"}
{name: "Pau", race_type: "J", start_time: "08:50", purse: "33.000", currency: "EUR"}
{name: "Vincennes", race_type: "T", start_time: "Due", purse: "29.000", currency: "EUR"}
{name: "Melton PMU", race_type: "T", start_time: "11:15", purse: "25.000", currency: "EUR"}

// Race 5, Norway
{name: "Leangen", race_type: "T", start_time: "09:05", purse: "12.000", currency: "GBP"}
{name: "Leangen", race_type: "T", start_time: "09:05", purse: "12.000", currency: "EUR"}

看来你已经解决了。不是等一下,你真正的问题是什么?过滤还是排序?我想用最高的钱包排序,但是我需要更容易地考虑货币(EURE和GBP),你可以使用<代码>。排序< /代码>。您对该示例数组的预期输出是什么?作为一个示例,这很好,但请注意汇率会发生变化,因此您不能只硬编码
0.89
转换率。如果比赛已经开始,你想要的是比赛当天的汇率;或者,如果比赛仍在未来,您需要现在(代码运行时)的速率。当我在银行业编程时,我们就是这样做的。(或者,如果现在有一个好的“预测利率”,你会在未来的比赛中使用它)。@StephenP我根据假设货币单位稳定的会计原则对其进行了硬编码。但我想我不知道这是否适用于国际商业环境。诺亚,谢谢你的帮助,也许你的解决方案会奏效,有点奇怪,在第5场比赛(挪威)的例子中,英镑仍然排在第二位。12000英镑高于12000欧元。@Danielfelpe这是因为我混淆了转换:)将得到解决。@Noah,它成功了!非常感谢:)。
// Race 3, France
{name: "Marseilles", race_type: "G", start_time: "09:20", purse: "38.000", currency: "EUR"}
{name: "Toulouse", race_type: "T", start_time: "09:00", purse: "35.000", currency: "EUR"}
{name: "Pau", race_type: "J", start_time: "08:50", purse: "33.000", currency: "EUR"}
{name: "Vincennes", race_type: "T", start_time: "Due", purse: "29.000", currency: "EUR"}
{name: "Melton PMU", race_type: "T", start_time: "11:15", purse: "25.000", currency: "EUR"}

// Race 5, Norway
{name: "Leangen", race_type: "T", start_time: "09:05", purse: "12.000", currency: "GBP"}
{name: "Leangen", race_type: "T", start_time: "09:05", purse: "12.000", currency: "EUR"}