谁最有钱-代码战挑战-JavaScript

谁最有钱-代码战挑战-JavaScript,javascript,arrays,class,instance,Javascript,Arrays,Class,Instance,你将和一些学生一起去旅行,由你来记录每个学生有多少钱。学生的定义如下: 正如你所知道的,每个学生都有一些五、十和二十。你的工作是把钱最多的学生的名字还给他。如果每个学生的金额相同,则返回“全部” 注: 每个学生都有一个唯一的名字 总会有一个明确的赢家:要么一个人拥有最多,要么每个人拥有相同的数量 如果只有一个学生,那么这个学生的钱最多 我试过这个: 函数最大值(学生){ //获取总计数组 让数组=[]; students.forEach((值、索引)=>{ 让总数=((5*value.5)+

你将和一些学生一起去旅行,由你来记录每个学生有多少钱。学生的定义如下:

正如你所知道的,每个学生都有一些五、十和二十。你的工作是把钱最多的学生的名字还给他。如果每个学生的金额相同,则返回“全部”

注:

每个学生都有一个唯一的名字

总会有一个明确的赢家:要么一个人拥有最多,要么每个人拥有相同的数量

如果只有一个学生,那么这个学生的钱最多


我试过这个:

函数最大值(学生){
//获取总计数组
让数组=[];
students.forEach((值、索引)=>{
让总数=((5*value.5)+(10*value.tens)+(20*value.twenties));
push([total,value.name]);
});
//总计排序数组
array=array.sort((a,b)=>b[0]-a[0]);
log('array****',array);
//检查所有总数是否相等-如果相等,则返回“全部”
if(array.every((el,i,array)=>(el)[0])==数组[0][0]){
返回“全部”;
}
否则{
返回数组[0][1];
}
}
工作解决方案:)

事实上,我的
有一个问题。每一个
-我都在做
(el)[0])
,而不是
el[0]
,然后我也没有正确地检查只有一个学生进入
大多数学校


感谢大家对console.log问题的关注。Codewars是console.logging多次,因为正如大家提到的,它正在运行多个测试

我可以建议以下解决方案:

  function mostMoney(students) {
     //deep copy of argument
     let input = [...students];
     // sort students by total descending
     let sum = st => st.fives * 5 + st.tens * 10 + st.twenties * 20;
     let comparator = (st1,st2) => sum(st2) - sum(st1);
     input.sort(comparator);     
     // result
     //just compare the first two students
     if(input.length >=2 && sum(input[0]) == sum(input[1])){
      return 'all';
     }
     else{
      return input[0].name;
     }
  }

你的意思是你有多个控制台日志?看起来是这样的,即使我在代码中只做了一个console.log:可能你的
mostMoney
函数在测试中被多次调用?因此多个控制台日志?代码是针对一系列测试运行的,所以控制台将记录多个数据集。@c_ogo哦,好的-这有助于消除一些混淆。因此,问题仍然在于我的
.every()
,我假设-当所有值都相同时,它不会返回true。
function mostMoney(students) {
  let array = [];
  if (students.length === 1) {
     return students[0].name;
  }
  students.forEach((value, index) => {
     let total = ((5 * value.fives) + (10 * value.tens) + (20 * value.twenties));
     array.push([total, value.name]);
  });
  array = array.sort((a, b) => b[0] - a[0]);
  if (array.every((el, i, array) => el[0] === array[0][0])) {
    return 'all'; 
  }
  else {
    return array[0][1];
  }
}
  function mostMoney(students) {
     //deep copy of argument
     let input = [...students];
     // sort students by total descending
     let sum = st => st.fives * 5 + st.tens * 10 + st.twenties * 20;
     let comparator = (st1,st2) => sum(st2) - sum(st1);
     input.sort(comparator);     
     // result
     //just compare the first two students
     if(input.length >=2 && sum(input[0]) == sum(input[1])){
      return 'all';
     }
     else{
      return input[0].name;
     }
  }