字符串如何转换对象 再将对象转换为字符串

154 阅读1分钟

假设 str 存储的是后端反馈给我们的一个信息 => 要求如下

    var str = 'username=靓仔&age=18&qq=88888888'

    需求1:
        将
        'username=靓仔&age=18&qq=88888888'
        更改为
        {
            username: '靓仔',
            age: 18,
            qq: 88888888
        }

    需求2:
        将
        {
            username: '靓仔',
            age: 18,
            qq: 88888888
        }
        更改为
        'username=靓仔&age=18&qq=88888888'
        
        

代码实现

将字符串转换为对象

 var str = 'username=靓仔&age=18&qq=88888888'
 
var arr = str.split('&');   // 通过split()方法将&两边的数据分隔开   以数组返回
var obj = {};       //定义一个空对象
        // console.log(arr);
arr.forEach(function(item){ 
    var arr1 = item.split('='); //将等号两边分隔开,形成三个新的数组
    // console.log(arr1);
    
    // 定义两个变量 key value存储对象的键和值
    // var key = arr1[0];    
    // var value = arr1[1];
    // obj[key] = value; 
    
    // 上面三段代码可缩写为  =>  obj[arr1[0]] = arr1[1];
    obj[arr1[0]] = arr1[1];  // 索引0的值为对象的键  索引1的值为对象的值
        })
        console.log(obj);

将对象转换为字符串

var newStr = '';   //定义一个空字符串  用于存储对象转换后的字符串
for(var key in obj){  // 通过循环拿到对象中所有的索引下标
    newStr += key + '=' + obj[key] + '&';    // 将键和值拼接成字符串
// 拿到的字符串 'username=靓仔&age=18&qq=88888888&'   要将最后一个&去掉
}
newStr = newStr.slice(0,newStr.length-1); // 通过字符串截取的方法将最后一个&去掉
console.log(newStr);