在不超过某个值的对象数组中查找最高值-Javascript

在不超过某个值的对象数组中查找最高值-Javascript,javascript,arrays,loops,object,properties,Javascript,Arrays,Loops,Object,Properties,我有一个对象数组,希望找到得分最高的玩家,也不超过某个分数,例如20分。我该怎么做 let playerScores = [ { player: 'Dealer', score: 19, cards: 'A of ♥, 5 of ♦' }, { player: 'Player1', score: 18, cards: '10 of ♦, 8 of ♦' }, { player: 'Player2', score: 23, ca

我有一个对象数组,希望找到得分最高的玩家,也不超过某个分数,例如20分。我该怎么做

    let playerScores = [ 
  { player: 'Dealer',
    score: 19,
    cards: 'A of ♥, 5 of ♦' },
  { player: 'Player1',
    score: 18,
    cards: '10 of ♦, 8 of ♦' },
  { player: 'Player2',
    score: 23,
    cards: '6 of ♦, 6 of ♥, J of ♠' }
    ]

console.log(playerScores)
// iterates through playerScores
for (let i in playerScores) {
    if (playerScores[i].score > 20) {
        console.log(playerScores[i].player + ' BUSTED!')
        // removes the object with a score over 21 from the array
        playerScores.splice(i,1)
    }
    return playerScores
}

一个简单的解决方案是创建一个函数,该函数接受limit分数并迭代palyerScores的元素,然后找到匹配元素。请参见下面的示例

让playerScores=[ { 玩家:“庄家”, 得分:19分, 卡片:一张♥, 第五♦', }, { 玩家:“玩家1”, 得分:18分, 卡片:共10张♦, 第8页,共页♦', }, { 玩家:“玩家2”, 得分:23分, 卡片:共6张♦, 第6页,共页♥, J of♠', }, ]; 函数getHighestScorelimitScore{ 让最高分=0; 让player={}; 对于let i=0;i最高得分&& playerScores[i].分数<限制分数 { 最高分=球员得分[i]。得分; player=Object.assign{},playerScores[i]; } } 返回球员; } 让highsetScorePlayerNotExced20=获得最高分数20;
console.loghighsetScorePlayerNotExced20 一个简单的解决方案是创建一个函数,该函数接受limit分数并迭代palyerScores的元素,然后找到匹配元素。请参见下面的示例

让playerScores=[ { 玩家:“庄家”, 得分:19分, 卡片:一张♥, 第五♦', }, { 玩家:“玩家1”, 得分:18分, 卡片:共10张♦, 第8页,共页♦', }, { 玩家:“玩家2”, 得分:23分, 卡片:共6张♦, 第6页,共页♥, J of♠', }, ]; 函数getHighestScorelimitScore{ 让最高分=0; 让player={}; 对于let i=0;i最高得分&& playerScores[i].分数<限制分数 { 最高分=球员得分[i]。得分; player=Object.assign{},playerScores[i]; } } 返回球员; } 让highsetScorePlayerNotExced20=获得最高分数20;
console.loghighsetScorePlayerNotExced20 您可以先过滤数据,按分数排序,然后取第一个:

let filteredData = playerScores.filter(p=>p.score<=20).sort((a,b) => b.score-a.score);
let result = filteredData.length ? filteredData[0] : undefined;`

您可以先过滤数据,按分数排序,然后取第一个:

let filteredData = playerScores.filter(p=>p.score<=20).sort((a,b) => b.score-a.score);
let result = filteredData.length ? filteredData[0] : undefined;`

您可以使用条件的链式检查,并在必要时将对象添加到结果集中,或者使用分数较高的对象替换该对象

var playerScores=[{玩家:“庄家”,分数:19,牌:“一张♥, 第五♦' }, {玩家:'Player1',得分:18分,牌:'10张♦, 第8页,共页♦' }, {玩家:'Player2',得分:23分,牌:'6张♦, 第6页,共页♥, J of♠' }], 值=20, 结果=PlayerCores.reducefunction r,o{ 如果o.score>=值{ 返回r; } 如果!r.length | | r[0]。分数console.logresult;您可以使用条件的链式检查,并在必要时将对象添加到结果集中,或者用分数较高的对象替换该对象

var playerScores=[{玩家:“庄家”,分数:19,牌:“一张♥, 第五♦' }, {玩家:'Player1',得分:18分,牌:'10张♦, 第8页,共页♦' }, {玩家:'Player2',得分:23分,牌:'6张♦, 第6页,共页♥, J of♠' }], 值=20, 结果=PlayerCores.reducefunction r,o{ 如果o.score>=值{ 返回r; } 如果!r.length | | r[0]。分数 您可以检查reduce函数的工作方式

让playerScores=[ {玩家:'庄家', 得分:19分, 卡片:一张♥, 第五♦' }, {玩家:'玩家1', 得分:18分, 卡片:共10张♦, 第8页,共页♦' }, {玩家:'Player2', 分数:20,, 卡片:共6张♦, 第6页,共页♥, J of♠' } ]; var highestScore=Math.max.applyMath,playerScores.mapfunctiono{ 得分=0; 如果得分!=20{ 分数=o.score; } 返回分数; }; 控制台。loghighestScore; 让playerScores=[ {玩家:'庄家', 得分:19分, 卡片:一张♥, 第五♦' }, {玩家:'玩家1', 得分:18分, 卡片:共10张♦, 第8页,共页♦' }, {玩家:'Player2', 分数:20,, 卡片:共6张♦, 第6页,共页♥, J of♠' } ]; var highestScore=Math.max.applyMath,playerScores.mapfu nctiono{ 得分=0; 如果得分!=20{ 分数=o.score; } 返回分数; };
console.loghighestScore;代码中有什么不起作用?我需要找到得分最高的玩家,在这种情况下是得分为19的庄家。是的,没错!我想找到得分最高的玩家,低于20分。平局呢?然后我需要向所有得分相同的玩家展示哪些代码不起作用?我需要找到得分最高的玩家,在这种情况下,得分为19分的玩家。是的,没错!我想找到得分最高的球员,低于20分。平局怎么样?然后我需要展示所有得分相同的球员