一、序列化与反序列化
序列化:就是将对象转化成字节序列的过程。
反序列化:就是讲字节序列转化成对象的过程。对象序列化成的字节序列会包含对象的类型信息、对象的数据等,说白了就是包含了描述这个对象的所有信息,能根据这些信息“复刻”出一个和原来一模一样的对象。
1、序列化
js中的object转化为字符串
- 1.使用toJSONString
var last=obj.toJSONString(); //将JSON对象转化为JSON字符
- 使用stringify
var last=JSON.stringify(obj); //将JSON对象转化为JSON字符
- json转字符串函数
var json = {a:1,b:2,c:3};
var arr = [];
for ( name in json) {
arr.push(name+':'+json[name]);
}
var str = arr.join(',');
alert(str);
2、反序列化
json字符串转化为object
- eval
js中的eval()方法就是一个js语言的执行器,它能把其中的参数按照JavaScript语法进行解析并执行。
var obj=eval("("+data+")");
- 使用parseJSON
var obj = data.parseJSON(); //由JSON字符串转换为JSON对象
- 使用parse
var obj = JSON.parse(data); //由JSON字符串转换为JSON对象
- 使用封装函数
function convertCartStrToObj(cartStr){
var obj ={};
//将字符串name:17dian,key:123456,tel:18810701077 按“,”拆分成数组["name:17dian", "key:123456", "tel:18810701077"]
var arrVal = cartStr.split(",");
for ( var i = 0; i < arrVal.length ;i++){
data = arrVal[i].split(":"); // 在将每一项拆分 例如arrVal[0]时 data =["name", "17dian"]
console.log(data)
obj[data[0]] = data[1]; //给对象添加属性
}
return obj;
}
二、字符串处理
1、 js 截取指定字符后面/前面的所有字符串
- 在js中,可以通过indexOf( )方法找到指定的字符位置,再使用length属性获得字符串的长度,最后,使用substring()方法完成截取字符串的操作。
substring() 截取字符串 用法: substring(start,end)(不包括end)
//js 截取指定字符后面/前面的所有字符串
let str = '你还好吗?嗯?我很好!'
//截取第一个?前面的字符串
var index = str.indexOf("?")
var resolve = str.substring(0, index);
console.log(resolve)
//你还好吗
//截取第一个?后面的字符串
var indexs = str.indexOf("?")
var resolves = str.substring(indexs + 1, str.length);
console.log(resolves)
//嗯?我很好!
//截取最后一个?前面的字符串
let indexss = str.lastIndexOf("?")
var resolvess = str.substring(0, indexss);
console.log(resolvess)
//你还好吗?嗯
//截取最后一个?后面的字符串
let indexsss = str.lastIndexOf("?")
var resolvesss = str.substring(indexsss + 1, str.length);
console.log(resolvesss)
//我很好!
2、js截取字符串里括号间的内容
var reg1 = /((.+?))/g; // () 小括号
var reg2 = /[(.+?)]/g; // [] 中括号
var reg3 = /{(.+?)}/g; // {} 花括号,大括号
var reg4 = /((.+?))/g; //() 中文小括号
var reg5 = /【(.+?)】/g; // 【】中文中括号
var a = /\[(.*?)\]/gi;
var b = "qqq[2]33";
var c = b.match(a);
if (c) {
for (var i = 0; i < c.length; i++) {
alert(c[i]); // 保留中括号
alert(c[i].replace(a, "$1")); // 不保留中括号
}
}
最终结果:2
3、字符串合并操作:“ + ”
注意:字符转和数字相加的字符串!
var iNum01 = 12;
var iNum02 = 24;
var sNum03 = '12';
var sTr = 'abc';
alert(iNum01+iNum02); //弹出36
alert(iNum01+sNum03); //弹出1212 数字和字符串相加等同于字符串相加
alert(sNum03+sTr); // 弹出12abc
4、parseInt() 将数字字符串转化为整数
注意:转化有小数时会把小数部分去掉取整!
var sNum01 = '12';
var sNum02 = '24';
var sNum03 = '12.32';
alert(sNum01+sNum02); //弹出1224
alert(parseInt(sNum01)+parseInt(sNum02)) //弹出36
alert(parseInt(sNum03)) //弹出数字12 将字符串小数转化为数字整数
5、parseFloat() 将数字字符串转化为小数
var sNum03 = '12.32'
alert(parseFloat(sNum03)); //弹出 12.32 将字符串小数转化为数字小数
6、split() 把一个字符串分隔成字符串组成的数组
注意:不出在会弹出-1!
var sTr = '2017-4-22';
var aRr = sTr.split("-");
var aRr2= sTr.split("");
alert(aRr); //弹出['2017','4','2']
alert(aRr2); //弹出['2','0','1','7','-','4','-','2','2']
7、indexOf() 查找字符串是否含有某字符
var sTr = "abcdefgh";
var iNum = sTr.indexOf("c");
alert(iNum); //弹出2
8、字符串反转
注意:字符串反转就是用的数组的方法!
var str = 'asdfj12jlsdkf098';
var str2 = str.split('').reverse().join('');
alert(str2);