通过很多开放平台发现开放接口通常是下划线数据格式,我们的后端java往往是驼峰格式
这让我们必须面临着数据来回转化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| // 字符串下划线转驼峰 const formatToHump = (value) => { return value.replace(/\_(\w)/g, (_, letter) => letter.toUpperCase()) }
// 字符串驼峰转下划线 const formatToLine = (value) => { return value.replace(/([A-Z])/g, '_$1').toLowerCase() }
/** * 数据对象key 驼峰下划线互相转化 * @param {Object} data 需要转换的对象 * @param {String} type hump-转驼峰 toLine-转下划线 */ export const formatHumpLineTransfer = (data, type = 'hump') => { let hump = '' // 转换对象中的每一个键值为驼峰的递归 const formatTransferKey = (data) => { if (data instanceof Array) { data.forEach(item => formatTransferKey(item)) } else if (data instanceof Object) { for (const key in data) { hump = type === 'hump' ? formatToHump(key) : formatToLine(key) data[hump] = data[key] if (key !== hump) { delete data[key] } if (data[hump] instanceof Object) { formatTransferKey(data[hump]) } } } else if (typeof data === 'string') { data = type === 'hump' ? formatToHump(data) : formatToLine(data) } } formatTransferKey(data) return data }
|