接口字段大写和下滑线小写互相转换

##接口字段大写和下滑线小写互相转换
前言:
目前这个系统是两个后端写的,由于返回的字段不统一 ,需要转换下,他们改的话也麻烦,我改的话也很麻烦,那就我麻烦吧 ,刚开始写了了 下滑线小写转大写的 ,后来他返回的字段又变了,但我页面写好了,牵一发而动全身,想让后端改 ,但他很忙,我晚上就想想怎么搞吧 , 也许我的方法很笨,但目前能用。----------有点罗嗦了 话不多说进入正题

一:下滑线转大写

后端返回的数据是这样的

 [
 	{
	    plan_year: '2019',
		plan_money: 200,
    },
    {
        plan_year: '2021',
        plan_money: 200,
    },
]

转换成这样的

 [
 	{
       	planYear: '2019',
        planMoney: 200,
    },
    {
        planYear: '2021',
        planMoney: 200,
    },
]
function _low_to_up(arr1) {
   let arr = arr1.concat([]);
   return arr.map((v) => {
       let obj = {};
       for (let i in v) {
           obj[re(i)] = v[i];
       }
       return obj;
   });
   //把下滑线替换成大写
   function re(str) {
       if (str.indexOf("_") != -1) {
           let index = str.indexOf("_");
           let sml = str.substr(index + 1, 1);
           let reg = "/_" + sml + "/g";
           let str1 = str.replace(eval(reg), sml.toLocaleUpperCase());
           if (str1.indexOf("_") != -1) {
               str1 = re(str1)
           }
           return str1;
       } else {
           return str;
       }
   }
}

//0: {planYear: "2019", planMoney: 200}
//1: {planYear: "2021", planMoney: 200}

二:大写转下滑线

[
	{
	  	schEduleS: '你好',
	   	planMoney: 200,
	},
    {
        scheDule: '你好1',
        planMoney: 2002,
    }
]
//转换成:
[
	{
	  	sch_edule_s: '你好',
	   	plan_money: 200,
	},
    {
        sche_dule: '你好1',
        plan_money: 2002,
    }
]

之前写了一个 但只能替换第一个大写字母
下面这个是我从新写的 写的感觉不好 凑合着看吧

    function up_to_low(arr1) {
            let arr = arr1.concat([]);
            let finally1 = [];
            for (let i = 0; i < arr.length; i++) {
                let obj = arr[i]
                let newobj = {}
                for (let key in obj) {
                    let name = repeat(key)
                    newobj[name] = obj[key]
                }
                finally1.push(newobj)
            }
            return finally1
            //检测多个大写字母
            function repeat(key) {
                let str = ''
                str = fil(key, check(key))
                if (check(str)) {
                    str = fil(str, check(str))
                }
                return str
            }
            //替换字母
            function fil(b, s) {
                let reg = '/' + s + '/g'
                return b.replace(eval(reg), '_' + s.toLowerCase())
            }
            //返回大写字母
            function check(key) {
                let key1 = key.toLowerCase()
                // console.log(key, key1);
                let arr2 = key.split('') //old
                let arr3 = key1.split('') //new
                //找到大写字母
                let str;
                for (let i = 0; i < arr2.length; i++) {
                    if (arr2[i] != arr3[i]) {
                        return arr2[i]
                        // let reg = '/' + arr2[i] + "/g";
                        // str = key.replace(eval(reg), `_${arr3[i]}`)
                        // console.log(str)
                    }
                }
            }
        }
// 0: {sch_edule_s: "你好", plan_money: 200}
//1: {sche_dule: "你好1", plan_money: 2002}

总结:有哪位大神有简单的方法啊,我这太笨了,有的话请留言,谢谢!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值