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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| function transformField(str, prefix = '', rmPrefix) { let newstr = ''; if (rmPrefix) { const reg = new RegExp(rmPrefix); str = str.replace(reg, ''); } if (/\_/g.test(str)) { newstr = str.split('_').map((char, index) => (index === 0 ? char : char.slice(0, 1).toUpperCase() + char.slice(1))).join(''); } else { newstr = str.replace(/[A-Z]/g, (...args) => (`_${args[0].toLowerCase()}`)); } return prefix + newstr; }
function dateFormat(date, format) {let fmt = format || 'yyyy-MM-dd hh:mm:ss'; const o = {'M+': date.getMonth() + 1, 'd+': date.getDate(), 'h+': date.getHours(), 'm+': date.getMinutes(), 's+': date.getSeconds(), 'q+': Math.floor((date.getMonth() + 3) / 3), 'S+': date.getMilliseconds()}; if (/(y+)/.test(fmt)) {fmt = fmt.replace(RegExp.$1, (`${date.getFullYear()}`).substr(4 - RegExp.$1.length));} for (const k in o) {if (new RegExp(`(${k})`).test(fmt)) {fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : ((`00${o[k]}`).substr((`${o[k]}`).length)));} } return fmt;}
const isObject = (val) => Object.prototype.toString.call(val) === '[object Object]'; const isArray = (val) => Object.prototype.toString.call(val) === '[object Array]'; const isDate = (val) => Object.prototype.toString.call(val) === '[object Date]';
function transformObj(obj, options = {}) { let {prefix, rmPrefix, deep, format} = options; if (!prefix) { prefix = ''; } if (!rmPrefix) { rmPrefix = ''; } if (!deep) { deep = false; } if (!format) { format = 'yyyy-MM-dd hh:mm:ss'; } if (isArray(obj) || isObject(obj)) { const handleObj = o => { const n = {}; Object.keys(o).forEach(key => { if (!deep) { n[transformField(key, prefix, rmPrefix)] = isDate(o[key]) ? dateFormat(new Date(o[key]), format) : o[key]; } else { n[transformField(key, prefix, rmPrefix)] = isArray(o[key]) || isObject(o[key]) ? transformObj(o[key], {deep}) : (isDate(o[key]) ? dateFormat(new Date(o[key]), format) : o[key]) } }); return n; }; return Array.isArray(obj) ? obj.map(item => handleObj(item)) : handleObj(obj); } if (isDate(new Date(obj))) { return dateFormat(new Date(obj), format); } return obj; }
let obj = [{ article_id: '123', article_name: 'hello', article_create_time: new Date(), article_create_user: { user_id: '111', user_name: 'admin', user_create_time: new Date() }, article_thumb_user: [ { user_id: '111', user_name: 'admin', user_create_time: new Date() }, { user_id: '111', user_name: 'admin', user_create_time: new Date() }, ] }]
console.log(transformObj(obj, {deep: true}))
|