
已解决问题
谷歌doqzn用户在2013.08.26提交了关于“北海公园详解关于JSON.parse()和JSON.stringify()的性能小测试”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-27T03:56:36。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,你就是当代的活雷锋,太感谢了 !
详细问题描述及疑问:期待您的答案,你就是当代的活雷锋,太感谢了 !
JSON.parse(JSON.stringify(obj))我们
先上两个js
定义一些初始**
letjsonData={title:'hhhhh',dateArr:[],series:[{name:'line1',data:[]},{name:'line2',data:[]},{name:'line3',data:[]},]};letres=[{name:'line1',value:1},{name:'line2',value:2},{name:'line3',value:3},];场景1:模拟真实环境中图表**实时更新
**处理函数
/***处理json**的函数。模拟真实环境中图表**实时更新*@paramlastData{Object}上一次的***@paramres{Array}当前***@returnsdata处理完成后的结果集*/functionhandleJsonData(lastData,res){//1.使用JSON.parse(JSON.stringify())深拷贝letdata=JSON.parse(JSON.stringify(lastData));//2.不使用JSON序列化,直接修改参数//letdata=lastData;if(data.dateArr.length>60){data.dateArr.shift();for(leti=0;i<data.series.length;i++){data.series[i].data.shift();}}data.dateArr.push(newDate().toTimeString().substr(0,8));for(leti=0;i<data.series.length;i++){data.series[i].data.push(res[i].value);}returndata;}maxCount=100
跑起来,先让maxCount=100,for循环100次
letjsonTest=function(){jsonData=handleJsonData(jsonData,res);};intervalTest(jsonTest,{maxCount:100});1.使用JSON.parse(JSON.stringify())深拷贝的结果:
2.不使用JSON序列化,直接修改参数的结果:
functionhandleJsonData(lastData,res){//1.使用JSON.parse(JSON.stringify())深拷贝//letdata=JSON.parse(JSON.stringify(lastData));//2.不使用JSON序列化,直接修改参数letdata=lastData;//}maxCount=1000
intervalTest(jsonTest,{maxCount:1000});1.使用JSON.parse(JSON.stringify())深拷贝的结果:
2.不使用JSON序列化,直接修改参数的结果:
maxCount=10000
intervalTest(jsonTest,{maxCount:10000});1.使用JSON.parse(JSON.stringify())深拷贝的结果:
2.不使用JSON序列化,直接修改参数的结果:
场景2:判断一个对象是否为空对象
//1.使用JSON.stringify()判断一个对象是否为空对象letisEmptyObject1=function(){if(JSON.stringify(jsonData)==='{}'){//dosomething}};//2.使用Object.keys().length判断一个对象是否为空对象letisEmptyObject2=function(){if(Object.keys(jsonData).length===0){//dosomething}};只是走了一下判断条件,if**没有执行代码
maxCount=1000
1.使用JSON.stringify()判断一个对象是否为空对象的结果:
intervalTest(isEmptyObject1,{maxCount:1000});2.使用Object.keys().length判断一个对象是否为空对象的结果:
intervalTest(isEmptyObject2,{maxCount:1000});maxCount=10000
1.使用JSON.stringify()判断一个对象是否为空对象的结果:
2.使用Object.keys().length判断一个对象是否为空对象的结果:
maxCount=100000
1.使用JSON.stringify()判断一个对象是否为空对象的结果:
2.使用Object.keys().length判断一个对象是否为空对象的结果:
关于JSON.parse()和JSON.stringify()的测试先到此为止,变换参数、更改执行的代码块可能会有不同结果,以上结果仅供参考。
小结论:能不用JSON.parse()和JSON.stringify()就不用,采用替代方案且性能更优的。PS:特别是需要多次执行的代码块,特别是这个JSON**比较庞大时
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解浅谈JSON.parse()和JSON.stringify()JSON.parse()和JSON.stringify()使用介绍