首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何返回附加到数组中最大整数的字符串(Javascript)

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

Stack Overflow用户
提问于 2018-06-19 05:41:00
回答 3查看 86关注 0票数 -1

所以我有一个函数,它接受一个对象数组,参数为( name,traffic),其中name是一个字符串,traffic是一个int。例如{“星期一”,12},{“星期二”,10}然后该函数应该返回具有最高通信量值的一个或多个名称

然而,我不知道如何只返回与对象相关的名称,例如“星期一”,或者如何在一个数组中为共享最高流量的对象返回多个名称。例如“星期一”、“星期二”

这是我到目前为止的代码;

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;
 }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-19 06:05:23

您需要在数组中将对象作为键值对传递。

function mostPopularDays(week) {
 if (week == null || week == []){
  return null;
 }
 /*just so it returns null if nothing is given*/
 var arr = [];
 var largest = week[0].traffic;
 for (var i = 0; i<week.length; i++){
   if (largest < week[i].traffic){
    largest = week[i].traffic
      }
 }

 /*takes the largest value and puts it in an array*/
 for (var i = 0; i<week.length; i++){
   if (week[i].traffic == largest){
    arr.push(week[i].name);
    }
 }
 
if(arr.length==1)
{
  arr = arr[0];
}
 
return arr; 
}

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

//will return string 
console.log(mostPopularDays(obj1));

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

//will return array
console.log(mostPopularDays(obj2));

票数 0
EN

Stack Overflow用户

发布于 2018-06-19 06:00:51

根据您的问题(假设您的流量值为正整数),代码如下:

function mostPopularDays(week) {
          if (week == null || week == []){
            return null;
          }
          /*just so it returns null if nothing is given*/
          //based on what you explained 'week' looks like [{'name': 'Monday', 'traffic': 10},.....]
          var arr = [];
          var max = 0;
          //checking for the maximum traffic value available in the week array
          for (var i = 0; i < week.length; i++) {
            if(week[i].traffic > max) {
              max = week[i].traffic;
            }
          }
          // push all the objects with max traffic value
          for (var i = 0; i<week.length; i++) {
            if (week[i].traffic === max){
              arr.push(week[i].name);
            }
          }
          if(arr.length > 1) {
            return arr;
          } else if(arr.length === 1) {
            return arr[0].name;
          }
        }
        var x = [{'name': 'Monday', 'traffic': 10}, {'name': 'Sunday', 'traffic': 20}, {'name': 'Tuesday', 'traffic': 12}, {'name': 'Friday', 'traffic': 20},{'name': 'Thursday', 'traffic': 15}];
        console.log(mostPopularDays(x));

但是,正如ASDFGerte和Xufox提到的,标准JS对象将具有键-值对。你可以在here上查看。

票数 0
EN

Stack Overflow用户

发布于 2018-06-19 16:36:20

一个更短的单行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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50917860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档