Javascript 清理“查找”功能
我正在尝试创建一个函数,该函数将返回数组中的特定对象。我最后在函数中放了一个函数,不确定这是否干净。代码如下:Javascript 清理“查找”功能,javascript,ecmascript-6,Javascript,Ecmascript 6,我正在尝试创建一个函数,该函数将返回数组中的特定对象。我最后在函数中放了一个函数,不确定这是否干净。代码如下: const getTeam = (teams, teamId) => { if(teamId === 0) return teams; const findTeam = (team) => { return team.teamId === teamId; } teams.find(findTeam); } 这是一系列的
const getTeam = (teams, teamId) => {
if(teamId === 0)
return teams;
const findTeam = (team) => {
return team.teamId === teamId;
}
teams.find(findTeam);
}
这是一系列的团队
[
{
id: 123,
name: "Boston Celtics",
players: [
{ id: 747, name: "John Doe" },
{ id: 749, name: "John Smith" },
]
},
{
id: 234,
name: "LA Lakers",
players: [
{ id: 888, name: "James Smith" },
{ id: 823, name: "John Green" },
]
}
]
我主要关心的是在getTeam函数中包含findTeam函数
更新:
像这样的?也许吧
const getTeam = (teams, teamId) => {
if(teamId === 0)
return teams;
teams.find((team) => {
return team.teamId === teamId;
});
}
只是短一点,不是更好。正如许多其他人所指出的那样,异常函数与命名函数与循环将引发一场微秒级的战争,因此这并不值得
function getTeam(teams,teamId) {
return teams.filter((x) => x.id === teamId);
};
也许吧?一定是return team.id吗?在另一个函数中包含一个函数没有什么错。这是一个很好的用法。但是正如@Jonasw所建议的,大多数人会使用匿名函数来实现这一点。现在你的更新等于我的代码,只是我没有使用返回和ParentHiseFind,因为它会在找到第一项后停止。我看到了两者的优点。如果可能有多个元素具有相同的teamId,则筛选器是一个不错的选择。在我的例子中,find比较干净,因为从技术上讲,我不应该有一个元素多次使用相同的teamId。但是,如果使用filter,则需要将返回作为一个团队数组来处理。我将这样编写它。虽然可能会有更多的空间和两行:@georg-Yay!nounnecessaryspaces~js解析器
function getTeam(teams,teamId) {
return teams.filter((x) => x.id === teamId);
};