在JavaScript数组中查找最接近的对象匹配
我有一个未排序对象的数组:在JavaScript数组中查找最接近的对象匹配,javascript,arrays,algorithm,sorting,object,Javascript,Arrays,Algorithm,Sorting,Object,我有一个未排序对象的数组: const participants = [ {code: '222222', is_winner: true}, {code: '444444', is_winner: false}, {code: '777777', is_winner: false}, {code: '555555', is_winner: true}, {code: '666666', is_winner: false}, {code: '111
const participants = [
{code: '222222', is_winner: true},
{code: '444444', is_winner: false},
{code: '777777', is_winner: false},
{code: '555555', is_winner: true},
{code: '666666', is_winner: false},
{code: '111111', is_winner: false},
{code: '333333', is_winner: false},
];
对于参与者,如何找到最近的对象,即\u winner key为true,即\u winner key始终为false
if participant = {code: '333333', is_winner: false}
=>
Should return {code: '555555', is_winner: true}
if participant = {code: '444444', is_winner: false}
=>
Should return {code: '222222', is_winner: true}
我希望得到一个已经获奖的参与者,这是一个最接近非获奖者的参与者。数组是非圆形的 这是我根据你问题中的信息所作的回答 常数参与者=[ {代码:'2222222',是_winner:true}, {代码:'444444',是_winner:false}, {代码:'777777',是_winner:false}, {代码:'555555',是_winner:true}, {代码:'666666',是_winner:false}, {代码:'111111',是_winner:false}, {代码:'333333',是_winner:false}, ]; 函数findClosestWinnercode,参与者{ let index=participants.findIndexparticipant=>{ return participant.code==代码 } 让胜利者 让awayDown=0 让awayUp=0 对于设x=index-1;x>=0;x-{ 让currentParticipant=参与者[x] awayDown+=1 如果currentParticipant.com是赢家{ 获胜者=当前参与者 打破 } } 对于let x=index+1;x
logfn'444444',data//2222更接近333333。你的逻辑不正确sense@chrispbacon我明白你的意思。我希望只找到相邻的参与者,而不是再次在阵列上循环。在这种情况下,您是正确的,222222比555555更接近333333。@chrispback为什么假设数组是圆形的?我认为这不是一个公平的假设。你的问题太不清楚了。您是否可以对其进行编辑,以反映您希望发生的事情、上述评论中的任何约束以及预期结果?