路径结合过滤器 - 使用 Ramda
path combined with filter - with Ramda
我正在从一个 API 查询数据,它具有我需要访问的嵌套对象属性。
const players = teamsData && teamsData.team && teamsData.team.players;
我正在使用 path
获取此数据。
const players = path(['team', 'players'], teamsData);
这有效,但是当我与过滤器结合使用时出现错误。
理想情况下,我想使用 pipe
并将其与 Ramda 的 filter
方法结合使用。
我的代码如下所示:
const injuredPlayers = pipe(
path(['team', 'players'], teamsData),
filter(player => player.isInjured)
);
看起来玩家变量确实等于
const players = path(['team', 'players'], teamsData);
至少从你写的代码来看
如果没问题就继续这里
起初我更愿意使用 pathOr 而不是看起来像这样
const pathTeamPlayers = R.pathOr([], ['team', 'players']);
const isInjured = player => player.injured
const filterInjured = R.filter(isInjured)
const teamDataToInjuredPlayers = R.pipe(
pathTeamPlayers,
filterInjured,
);
/* result */
teamDataToInjuredPlayers(teamData)
如果你只是想要受伤球员的名单,你可以这样写
const injuredPlayers =
filter (player => player.isInjured) (path (['team', 'players'], teamsData)
如果您想要一个 函数 从 teamsData
检索该信息,那么您可以写
const getInjuredPlayers = pipe (
path('[team', 'players']),
filter (prop ('isInjured'))
)
(或使用 pathOr
和 []
来提高可靠性)并用
调用它
const injuredPlayers = getInjuredPlayers (teamData)
您的代码结合了这两种截然不同的样式。
我正在从一个 API 查询数据,它具有我需要访问的嵌套对象属性。
const players = teamsData && teamsData.team && teamsData.team.players;
我正在使用 path
获取此数据。
const players = path(['team', 'players'], teamsData);
这有效,但是当我与过滤器结合使用时出现错误。
理想情况下,我想使用 pipe
并将其与 Ramda 的 filter
方法结合使用。
我的代码如下所示:
const injuredPlayers = pipe(
path(['team', 'players'], teamsData),
filter(player => player.isInjured)
);
看起来玩家变量确实等于
const players = path(['team', 'players'], teamsData);
至少从你写的代码来看
如果没问题就继续这里
起初我更愿意使用 pathOr 而不是看起来像这样
const pathTeamPlayers = R.pathOr([], ['team', 'players']);
const isInjured = player => player.injured
const filterInjured = R.filter(isInjured)
const teamDataToInjuredPlayers = R.pipe(
pathTeamPlayers,
filterInjured,
);
/* result */
teamDataToInjuredPlayers(teamData)
如果你只是想要受伤球员的名单,你可以这样写
const injuredPlayers =
filter (player => player.isInjured) (path (['team', 'players'], teamsData)
如果您想要一个 函数 从 teamsData
检索该信息,那么您可以写
const getInjuredPlayers = pipe (
path('[team', 'players']),
filter (prop ('isInjured'))
)
(或使用 pathOr
和 []
来提高可靠性)并用
const injuredPlayers = getInjuredPlayers (teamData)
您的代码结合了这两种截然不同的样式。