BeerusDev
BeerusDev

Reputation: 1519

Return Array Instead of String

I am trying to get an array response from my getTeam() function so I can properly filter my DataTable to show more than one team for the current Player (if they are on more than one team).

DataTables Filter:

  $.fn.dataTable.ext.search.push( //creating my own filter function for the table
        function(settings, searchData, index, rowData, counter, statusClass) { 

            var userName = searchData[1]; //created a var to search through the 3rd column (0 index) which contains all of the Monday Dates
            var searchTeam = searchData[0];
            // Get Datatables API
            var api = $.fn.dataTable.Api('#myTable'); 
            if (settings.sTableId === 'myTable' ) {
            if(userName === thisUserTitle){
            return true;
            } else {
              return false;
           }
           
          }
          if (settings.sTableId === 'certificateTable' ) {
            if(currentTeam === searchTeam){
            return true;
            } else {
              return false;
           }
           
          }
          return true;
        }
    );

The original snippet that returns just the first team:

var teamData = [{
  "Team" : "Team 1",
  "Players" :[ 
    "Beerus Dev",
    "Goten Dev",
    "Trunks Dev",
    "Majin Bu Dev"

  ]
},
{
  "Team" : "Team 2",
  "Players" : [
    "Beerus Dev",
    "Shap Dev",
    "Krillin Dev"
  ]
}
];


function getTeam() {

  const team = teamData.find(team => team.Players.includes(currentUser));
  return team.Team;
}

var currentUser = "Beerus Dev";
var currentTeam = getTeam(currentUser);
 
console.log(currentTeam);
 

To get the array response, I have tried using the .filter() as opposed to the .find() but I end up getting an empty array as my response.

var teamData = [{
  "Team" : "Team 1",
  "Players" :[ 
    "Beerus Dev",
    "Goten Dev",
    "Trunks Dev",
    "Majin Bu Dev"

  ]
},
{
  "Team" : "Team 2",
  "Players" : [
    "Beerus Dev",
    "Shap Dev",
    "Krillin Dev"
  ]
}
];

var currentUser = "Beerus Dev";

const team = teamData.filter(function(team, i){
    return teamData[i].Players.includes(currentUser);
})

console.log(team)

Upvotes: 2

Views: 67

Answers (1)

Jackkobec
Jackkobec

Reputation: 6765

Simplify this code:

var teamData = [{
  "Team" : "Team 1",
  "Players" :[ 
    "Beerus Dev",
    "Goten Dev",
    "Trunks Dev",
    "Majin Bu Dev"

  ]
},
{
  "Team" : "Team 2",
  "Players" : [
    "Beerus Dev",
    "Shap Dev",
    "Krillin Dev"
  ]
}
];

var currentUser = "Beerus Dev";
const team = teamData.filter(team => team.Players.includes(currentUser)).map(team => team.Team);

console.log(team)

Upvotes: 2

Related Questions