o2o-mapper
一个可扩展的对象转换工具
使用
// ES6 引入 // 或const map rules custom = mapper // CommonJS 引入const map rules custom = // 开始使用const target =
示例
// 简单对象映射 === newNameKey: 'myName' nonExistsKey: undefined // 嵌套对象映射 === outer: 'outerVal' inner: 'innerVal' newKey: innerKey: 'innerVal' // 对象安全取值 === undefined // 自定义规则(去除空值键) === key: 'test'
实现原理
根据源对象的类型和规则对象的类型,调用对应的转换函数。由转换函数返回转换后的目标对象。
对象可识别为如下类型:
null
undefined
string
number
boolean
function
object
array
symbol
bigint
这基本上是typeof
的返回结果,但null
和array
已经从object
类型中区分出来。
API
map
/** * 将源对象根据一系列规则转换成目标对象 * @param * @param * @returns */
rules
/** * 将多个规则合并为单个规则 * @param * @returns */
custom
/** * 自定义转换函数 * @param * @param * @param {(source, rule) => any} 规则函数,接受源对象和规则对象,返回目标对象 * @returns */
内置转换函数
any-function
任意类型的源对象和函数类型的规则对象。直接将源对象作为参数传入规则函数,规则函数的返回结果作为目标对象。
any-string
任意类型的源对象和字符串类型的规则对象。将规则字符串作为key
,尝试在源对象上取属性。若失败(源对象为null
或undefined
),则返回undefined
。
any-object
任意类型的源对象和对象类型的规则对象。将返回一个和规则对象结构相似的对象,规则对象的键映射为目标对象的键。规则对象的键值作为规则应用到源对象上,得到的结果作为目标对象对应的键值。