JavaScript中精简数组的返回索引

JavaScript中精简数组的返回索引,javascript,arrays,json,reactjs,reduce,Javascript,Arrays,Json,Reactjs,Reduce,我有一个负载,我正试图在JavaScript中对其执行一些函数: { "markets": [ { "mtId": 27, "id": 1, "cId": "27-1", "mt": "OVER_UNDER", "selections": [ {

我有一个负载,我正试图在JavaScript中对其执行一些函数:

{
  "markets": [
    {
      "mtId": 27,
      "id": 1,
      "cId": "27-1",
      "mt": "OVER_UNDER",
      "selections": [
        {
          "id": 1,
          "price": 1.0896773820446435,
          "selectionStatus": 1,
          "name": "Over 0.5"
        },
        {
          "id": 2,
          "price": 12.159031085167172,
          "selectionStatus": 1,
          "name": "Under 0.5"
        }
      ],
      "marketName": "Over Under 0.5"
    },
    {
      "mtId": 27,
      "id": 2,
      "cId": "27-2",
      "mt": "OVER_UNDER",
      "selections": [
        {
          "id": 1,
          "price": 1.4531444546407393,
          "selectionStatus": 1,
          "name": "Over 1.5"
        },
        {
          "id": 2,
          "price": 3.207355058969988,
          "selectionStatus": 1,
          "name": "Under 1.5"
        }
      ],
      "marketName": "Over Under 1.5"
    },
    {
      "mtId": 27,
      "id": 3,
      "cId": "27-3",
      "mt": "OVER_UNDER",
      "selections": [
        {
          "id": 1,
          "price": 2.3859593325595307,
          "selectionStatus": 1,
          "name": "Over 2.5"
        },
        {
          "id": 2,
          "price": 1.721681322609395,
          "selectionStatus": 1,
          "name": "Under 2.5"
        }
      ],
      "marketName": "Over Under 2.5"
    }
  ]
}
基本上,我想获取市场数组,映射选择和

  • 返回价差为0.5的数组
  • 然后我想取那个数组并返回最接近零的值
  • 我可以从这个函数中得到结果:

    export const generateNumberClosestToZero = (markets) => {
      let goal = 0;
    
      let result = markets
        .map((market) =>
          market.selections.reduce(function (bookPercentage, selection) {
            return 0.5 - 1 / selection.price;
          }, 0)
        )
        .reduce(function (prev, current) {
          return Math.abs(current - goal) < Math.abs(prev - goal) ? current : prev;
        });
      return result;
    };
    
    export const generateNumberClosestToZero=(市场)=>{
    目标=0;
    让结果=市场
    .map((市场)=>
    market.selections.reduce(函数(bookPercentage,selection){
    返回0.5-1/选择价格;
    }, 0)
    )
    .减少(功能(上一个,当前){
    返回Math.abs(当前-目标)

    但我想做的是检索该缩减值的指数,以便我可以在该特定市场上执行操作(例如,
    markets[1]
    等)。有没有一种方法可以在我的代码中实现这一点,或者有一种比目前更好的解决方案?

    您可以将索引与值一起映射,并且只减少值

    const
    generateNumberClosestToZero=(市场)=>{
    目标=0;
    回报市场
    .map((市场、指数)=>[
    market.selections.reduce((bookPercentage,selection)=>0.5-1/selection.price,0),
    指数
    ])
    .reduce((a,b)=>Math.abs(b[0]-goal)console.log(generateNumberClosestToZero(data.markets));
    我想这就是您想要的

    const markets=[{“mtId”:27,“id”:1,“cId”:“27-1”,“mt”:“0.5”以下,“selectionStatus”:1,“price”:1.0896773820446435,“selectionStatus”:1,“name”:“OVER 0.5”},{“id”:2,“price”:12.159031085167172,“selectionStatus”:1,“name”:“低于0.5”},“marketName”:“OVER低于0.5”},{“mtId”:27,“id”:2,“cId”:“27-2”,“mt”:“OVER u低于”;“selections”[{“id”:1,“price”:1.4531444546407393,“selectionStatus”:1,“name”:“Over 1.5”},{“id”:2,“price”:3.207355058969988,“selectionStatus”:1,“name”:“Under 1.5”}],“marketName”:“Over Under 1.5”},{“mtId”:27,“id”:3,“cId”:“27-3”,“mt”:“Over u Under”,“selections”:[{“id”:1,“price”:2.38593325595307,“selectionStatus”:1,“name”:“Over 2.5”{,“价格”:1.721681322609395,“选择状态”:1,“名称”:“低于2.5”}],“市场名称”:“低于2.5”}];
    const generateNumberClosestToZero=(市场)=>{
    let Nestest=9999;//找到迄今为止最接近的值
    让索引=[];//输出
    市场。forEach((m,n)=>{
    m、 选择。forEach((s,t)=>{
    如果(s.价格<最近值){//如果找到更接近值
    最近值=s.price;//将最近值设置为新值
    指数[0]=n;//商店市场指数
    索引[1]=t;//存储选择索引
    }
    })
    });
    收益指数;
    };
    const closest=generateNumberClosestToZero(市场);
    console.log(最近);//获取索引
    console.log(市场[最近的[0]].选择[最近的[1]];//访问市场的结果