当我在开发第一个应用程序时,这对Javascript来说还很陌生,我从R过来了,尽管数据操作(使用dplyr甚至是基R)变得非常容易,但是我目前正在为此而苦苦挣扎。我有以下数据:
var teamsA = ['team1', 'team2', 'team3'];
var teamsB = ['team4', 'team5', 'team6'];
var teamgroup = A;
var myData = [
{player: "Joe", team: "team1"},
{player: "Tom", team: "team3"},
{player: "Red", team: "team2"},
{player: "Smi", team: "team5"},
{player: "Bib", team: "team6"},
{player: "Cat", team: "team2"},
{player: "Dan", team: "team3"},
{player: "Jim", team: "team1"}
]
使用显示的数据,问题非常简单:我想根据teamgroup变量确定的数组中存在的团队过滤myData。即:
if(teamgroup == "A") {
myData.filter(team in teamsA)
} else {
myData.filter(team in teamsB)
}
...不太清楚如何使用javascript。最好使用新的ES6东西。谢谢!
最佳答案
您可以使用将球员和球队带入并使用Array#includes
进行过滤的函数。
function getTeam(players, teams) {
return players.filter(({ team }) => teams.includes(team));
}
var teamsA = ['team1', 'team2', 'team3'],
teamsB = ['team4', 'team5', 'team6'],
myData = [{ player: "Joe", team: "team1" }, { player: "Tom", team: "team3" }, { player: "Red", team: "team2" }, { player: "Smi", team: "team5" }, { player: "Bib", team: "team6" }, { player: "Cat", team: "team2" }, { player: "Dan", team: "team3" }, { player: "Jim", team: "team1" }];
console.log(getTeam(myData, teamsA));
console.log(getTeam(myData, teamsB));
.as-console-wrapper { max-height: 100% !important; top: 0; }