So I have a function that takes in an array of objects with the parameters of (name, traffic) where name is a String and traffic is an int. e.g [{"Monday",12},{"Tuesday",10}] The function then is supposed to return the name/names which have the highest traffic value
However I can't figure out how to return either just the name associated to the object e.g "Monday", or how to return multiply names in an array for objects that share the highest traffic. e.g ["Monday", "Tuesday"]
Here's my code so far;
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;
}
You need to pass objects as key value pair inside array.
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));
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments