javascript 字符串转对象

最近做项目,前后端,又遇到字符串对象的问题,立马想到,
以前我写过的一个非常好用的两个静态转换函数,专门用于 转换 不规范的字符串对象,和字符串数组


    /**
     *  转换字符串对象为真正的Object对象
     *  a = parseToObject({aa:'ko be',b:" 2"})
        b = parseToObject({aa:'kobe',b:1})
        c = parseToObject("{aa:'ko be',b: 1}")
        d = parseToObject("{aa:'kobe',b:'1'}")
        e = parseToObject({"a a":'kobe',b:1})
        f = parseToObject("{a a:'kobe',b:'1'}")

        输出:
        { aa: 'ko be', b: 2 }
        { aa: 'kobe', b: 1 }
        { aa: 'ko be', b: 1 }
        { aa: 'kobe', b: 1 }
        { 'a a': 'kobe', b: 1 }
        { 'a a': 'kobe', b: 1 }
    * @param {*} a 
    */
    static parseToObject = (a: any): object => {
        try {
            const temp = (paramObject) => {
                let obj = {};
                if (typeof paramObject == "object") {
                    Object.keys(paramObject).forEach(x => {
                        obj[x.trim()] = isNaN(paramObject[x]) == false ? Number(paramObject[x]) : paramObject[x];
                    })
                }
                return obj;
            }

            if (a.constructor.name == "String") {
                let index = a.indexOf("{")
                let lastIndex = a.lastIndexOf("}");
                let str = a.substr(index + 1, lastIndex - 1);
                let str2 = str.replace(/[\'\"\\\/\b\f\n\r\t]/g, '');
                let json = querystring.parse(str2, ',', ':')
                return temp(json)
            } else if (a.constructor.name == "Object") {
                return temp(a);
            } else {
                return {};
            }
        } catch (e) {
            return {};
        }
    }

    /**
 * @brief 用于将一个字符串的数组对象转换为数组对象
 * "[1,2,3]"  ===>    [1,2,3] (去掉引号的过程)
 * @param stringArray
 * @returns {Array}
 */
    static stringArrayParse = (stringArray) => {
        let ra = [];
        if (stringArray) {
            if (Array.isArray(stringArray)) {
                ra = stringArray
            } else {
                let index = stringArray.indexOf("[")
                let lastIndex = stringArray.lastIndexOf("]");
                let str = stringArray.substr(index + 1, lastIndex - 1);
                if (str) {
                    ra = str.split(",")
                }
            }
        }
        return ra.map(x => {
            if (x.indexOf) {
                // 如果数内容是一个object的数组,则将字符转为object
                if (x.indexOf("{") > -1 && x.indexOf("}") > 0) {
                    //上面定义函数
                    return Util.parseToObject(x);
                }
            }
            return x;
        })
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值