所以我有一个函数,它接受一个对象数组,参数为( 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;
}
发布于 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));
发布于 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上查看。
发布于 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);
https://stackoverflow.com/questions/50917860
复制相似问题