Ramda 将日期更改为空数组
Ramda changing Date to empty array
我有一个函数 (removeNullOrEmpty) 可以删除空变量或 null 变量,它完美无缺。
但是,我注意到当我传递一个 Date 对象时,这个函数转换为一个空数组,我不知道为什么
import { pipe, reject, either, isNil, isEmpty, map, when, is } from 'ramda'
export const removeNullOrEmpty = (o) =>
pipe(reject(either(isNil, isEmpty)), map(when(is(Object), removeNullOrEmpty)))(o)
const timestamp = new Date(Date.now()) // timestamp is a valid instance of Date
const result = removeNullOrEmpty({ timestamp })
console.log(result) // HERE timestamp is an empty array
{ timestamp: [] }
这是因为 is (Object)
(正确地)将日期识别为对象,但 code for map
uses a common trick to identify plain objects, and defaults to an array version 当输入不是普通对象时。
作为 Ramda 团队的一员,如果您愿意 raise an issue 报告此事,我将不胜感激。确实应该修复。
与此同时,我猜你已经意识到了这一点,但你可以使用相当丑陋的方法来解决这个问题:
const removeNullOrEmpty = (o) => pipe (
reject (either (isNil, isEmpty)),
map (when (both (is (Object), complement (is (Date))), removeNullOrEmpty))
) (o)
或者
const removeNullOrEmpty = unary (pipe (
reject (either (isNil, isEmpty)),
map (when (both (is (Object), complement (is (Date))), removeNullOrEmpty))
))
我有一个函数 (removeNullOrEmpty) 可以删除空变量或 null 变量,它完美无缺。
但是,我注意到当我传递一个 Date 对象时,这个函数转换为一个空数组,我不知道为什么
import { pipe, reject, either, isNil, isEmpty, map, when, is } from 'ramda'
export const removeNullOrEmpty = (o) =>
pipe(reject(either(isNil, isEmpty)), map(when(is(Object), removeNullOrEmpty)))(o)
const timestamp = new Date(Date.now()) // timestamp is a valid instance of Date
const result = removeNullOrEmpty({ timestamp })
console.log(result) // HERE timestamp is an empty array
{ timestamp: [] }
这是因为 is (Object)
(正确地)将日期识别为对象,但 code for map
uses a common trick to identify plain objects, and defaults to an array version 当输入不是普通对象时。
作为 Ramda 团队的一员,如果您愿意 raise an issue 报告此事,我将不胜感激。确实应该修复。
与此同时,我猜你已经意识到了这一点,但你可以使用相当丑陋的方法来解决这个问题:
const removeNullOrEmpty = (o) => pipe (
reject (either (isNil, isEmpty)),
map (when (both (is (Object), complement (is (Date))), removeNullOrEmpty))
) (o)
或者
const removeNullOrEmpty = unary (pipe (
reject (either (isNil, isEmpty)),
map (when (both (is (Object), complement (is (Date))), removeNullOrEmpty))
))