Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何返回附加到数组中最大整数的字符串(Javascript)_Javascript_Arrays_String_Function_Object - Fatal编程技术网

如何返回附加到数组中最大整数的字符串(Javascript)

如何返回附加到数组中最大整数的字符串(Javascript),javascript,arrays,string,function,object,Javascript,Arrays,String,Function,Object,因此,我有一个函数,它接受一个对象数组,参数为(name,traffic),其中name是一个字符串,traffic是一个int。例如[{“周一”,12},{“周二”,10}],然后该函数应该返回具有最高流量值的名称 但是,我不知道如何仅返回与对象关联的名称,例如“Monday”,或者如何在数组中为共享最高流量的对象返回多个名称。e、 g[“星期一”、“星期二”] 这是到目前为止我的代码 function mostPopularDays(week) { if (week == null ||

因此,我有一个函数,它接受一个对象数组,参数为(name,traffic),其中name是一个字符串,traffic是一个int。例如[{“周一”,12},{“周二”,10}],然后该函数应该返回具有最高流量值的名称

但是,我不知道如何仅返回与对象关联的名称,例如“Monday”,或者如何在数组中为共享最高流量的对象返回多个名称。e、 g[“星期一”、“星期二”]

这是到目前为止我的代码

function mostPopularDays(week) {
 if (week == null || week == []){
  return null;
 }
 /*just so it returns null if nothing is given*/
 var arr = [];
 var largest = week[0];
 for (var i = 0; i<week.length; i++){
   if (largest < week[i]){
    largest = week[i]
      }
    }
 arr.push(largest);
 /*takes the largest value and puts it in an array*/
 for (var i = 0; i<week.length; i++){
   if (week[i.] == largest){
    arr.push(week[i]);
     }
   }
 /*takes values that have the same amount and adds them to the array*/
 if(arr.length = 1){
 return arr[0]
   }
 /*returns the object if the array has just one entry*/
 return arr;
 }
功能最流行天数(周){
如果(周==空| |周==[])){
返回null;
}
/*如果没有给出任何值,它将返回null*/
var-arr=[];
var最大值=周[0];
对于(var i=0;i基于您的问题(假设您的流量值为正整数),以下是代码:

功能最流行天数(周){
如果(周==空| |周==[])){
返回null;
}
/*如果没有给出任何值,它将返回null*/
//根据您所解释的,“周”看起来像[{'name':'Monday','traffic':10},…]
var-arr=[];
var max=0;
//正在检查星期数组中可用的最大流量值
对于(变量i=0;i最大值){
max=周[i]。交通量;
}
}
//推送具有最大流量值的所有对象
对于(变量i=0;i 1){
返回arr;
}else if(arr.length==1){
返回arr[0]。名称;
}
}
var x=[{'name':'Sunday','traffic':10},{'name':'Sunday','traffic':20},{'name':'Sunday','traffic':12},{'name':'Friday','traffic':20},{'name':'Sunday','traffic':15}];

log(mostPopularDays(x));
您需要在数组中以键值对的形式传递对象

功能最流行天数(周){
如果(周==空| |周==[])){
返回null;
}
/*如果没有给出任何值,它将返回null*/
var-arr=[];
var最大=周[0]。流量;

对于(var i=0;i较短的一行ES6备选方案:

var arr = [{name:"Monday",traffic:10},{name:"Sunday",traffic:20},{name:"Wednesday",traffic:20}];

var result = arr.sort((a,b) => b.traffic - a.traffic).filter(({traffic}, i, arr) => traffic === arr[0].traffic).map(({name}) => name);

console.log(result);

{“Monday”,12}
是无效语法。
如果(arr.length=1)
不是比较。
周==[]
将永远不会像您预期的那样工作(请参见下面的注释)。
周[i.]
是无效的。@Xufox更糟糕的是,它将是无效的,例如当我知道
week==0
@ASDFGerte时,它只是为了证明我正在将对象输入到array@Xufox这条评论是在谈论上面发生的事情,而不是下面发生的事情。这条评论没有达到预期效果。最大的问题:
if(week[i]==max){
。正如已经对这个问题发表的评论,
week=[]
根本不是一个好主意,仍然无法按预期工作,您正在arr-
arr.push(week[i])
@dhaker,我不清楚他想要什么作为输出,所以请检查它旁边的评论。我的输出应该是当天,例如“星期一”或者,如果有多天的流量最高,则这些天以数组形式出现。例如[“周一”、“周二”]您的代码可以工作,但我尝试了两个具有相同最高流量的对象,并且在ArrayTanks中只返回了第一个对象的名称,这只是一个问题。如果只有一个对象具有最高流量,我希望获得字符串而不是数组,但当我创建一个if语句来处理此问题时,它无法返回数组当两个或多个对象具有最高流量时。这是不可避免的吗?@Anton让我对其进行更改,它会起作用。@Anton刚刚添加了您需要的内容