javascript 如何创建函数并对对象的元素求和[duplicate]

sczxawaw  于 2022-11-27  发布在  Java
关注(0)|答案(2)|浏览(100)

此问题在此处已有答案

How to find the sum of an array of numbers(58个答案)
昨天关门了。
我们有一个名为的数组chess_players,在数组的每个元素中都有一个对象,该对象具有两个属性:一个棋手的名字和他获得的点数在这个活动中,必须创建一个函数(它允许代码重用,也就是说,如果表扩展了更多的棋手,函数必须继续工作,而不需要修改任何东西)。创建的函数必须以参数的形式接收对象,并返回获得点数最多的棋手的名字。
目标:
1.使用带参数的函数,返回已定义的object
1.创造一个可循环使用的功能,允许扩大表与更多的球员。
1.使用最佳循环结构避免使用reducemap方法。
1.使用return来显示获得最多分数的玩家的名字。
这就是我所尝试的:

let chess_players = [{name:"Jackson",points:[900,1000,3000,1950,5000]},{name:"Steve",points:[300,400,900,1000,2020]}]

function returnName(object){
/* With this for in loop, I'm trying to iterate through each array to calculate the sum of each array */
  for (var num in object){
    var index = 0;
    var length = object.length;
    var sum = 0;
/* I try to return the maximum value */
    sum += object.fact[index ++]
    var maxVal = Math.max(...sum);
  }
  return array[index].name;
}

console.log(returnName(chess_players))
cbeh67ev

cbeh67ev1#

循序渐进:

const chess_players = [{name:"Jackson",points:[900,1000,3000,1950,5000]},{name:"Steve",points:[300,400,900,1000,2020]}]

function returnName(theObject){
    const arrOfTotalVal = theObject.map(obj => obj.points.reduce((a, c) => a + c));

    const maxVal = Math.max(...arrOfTotalVal);

    const index = arrOfTotalVal.indexOf(maxVal);

    return theObject[index].name;
}

console.log(returnName(chess_players));
i2byvkas

i2byvkas2#

我也许会用reduce方法计算每个玩家的总积分。然后将它们降序排序。最后检索玩家的名字。

let chess_players = [{name:"Jackson",points:[900,1000,3000,1950,5000]}, 
                     {name:"Steve",points:[300,400,900,1000,2020]}]
const returnName = theObject => 
  theObject.map(({name, points})=>({name, totalPoints:points.reduce((acc , current) => acc + current)})).sort((a,b)=> b.totalPoints - a.totalPoints)[0].name
console.log(returnName(chess_players))

相关问题