JavaScript中精简数组的返回索引
我有一个负载,我正试图在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": [ {
{
"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"
}
]
}
基本上,我想获取市场数组,映射选择和
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]];//访问市场的结果