所以我有一个包含工作日的对象数组,它看起来像这样:
const weekDays = [
{
id: 1,
name: 'monday'
},
{
id: 2,
name: 'tuesday'
},
{
id: 3,
name: 'wednesday'
},
{
id: 4,
name: 'thursday'
},
{
id: 5,
name: 'friday'
},
{
id: 6,
name: 'saturday'
},
{
id: 7,
name: 'sunday'
}
]
我有一个格式化日期的函数,它用于在选择组件中显示日期,它看起来像这样:
export const formatDay = flip(nth)(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'])
所以这个函数应该通过它的id返回一天的名称,例如,如果我们传递1,它应该返回星期一等,尽管目前它通过索引返回天,所以如果我们传递1,它返回星期二,尽管flip应该已经处理有这个问题
flip
函数未正确处理数组的从零开始的索引。 nth
函数需要一个从零开始的索引,但您传递的是从 1
开始的 id。您需要通过从输入值中减去 1 来调整第 n 个函数的输入。
export const formatDay = (id) => {
const days = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];
return nth(subtract(id, 1))(days);
};
const weekDays = [
{id: 1,name: 'monday'},
{id: 2,name: 'tuesday'},
{id: 3,name: 'wednesday'},
{id: 4,name: 'thursday'},
{id: 5,name: 'friday'},
{id: 6,name: 'saturday'},
{id: 7,name: 'sunday'},
];
const formatDay = (id) => {
const days = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];
return R.nth(R.subtract(id, 1), days);
};
console.log(formatDay(1)); // Output: "monday"
console.log(formatDay(2)); // Output: "tuesday"
console.log(formatDay(3)); // Output: "wednesday"
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/ramda.min.js"></script>
const { flip, nth } = R
const weekDays = [
{ id: 1, name: 'monday' },
{ id: 2, name: 'tuesday' },
{ id: 3, name: 'wednesday' },
{ id: 4, name: 'thursday' },
{ id: 5, name: 'friday' },
{ id: 6, name: 'saturday' },
{ id: 7, name: 'sunday' }
];
const formatDay = (id) =>
nth(id - 1, weekDays.map(day => day.name));
console.log(formatDay(1));
console.log(formatDay(2));
<script src="https:////cdn.jsdelivr.net/npm/ramda@latest/dist/ramda.min.js"></script>