将"a->b->c->d->e"转换成{"a":{"b":{"c":{"d":{"e":""}}}}} 输出

<script> $(function(){ var str="a->b->c->d->e"; /*法一*/ var arr = str.split('->'); var src= ""; for(var i=arr.length-1;i>=0;i--){ var obj = {}; obj[arr[i]]=src; src=obj; } console.log(JSON.stringify(src)); /*法二*/ var arr = str.split('->'); var src='{'; var num=0; var i = 0; var len = arr.length; for(i=0;i<arr.length;i++){ src += '"'+arr[i]+'":'; if(++num <= len-1){ src += '{'; } } src += '""'; for(i=0;i<=len-1;i++) src += '}'; console.log(src); console.log(eval('('+src+')')); /*法三*/ var str="a->b->c->d->e"; var reg=/(\w+)(->)?/gi; var arr; var src={},tmp=src; while(arr=reg.exec(str)){ tmp[arr[1]]={}; tmp=tmp[arr[1]]; } console.log(JSON.stringify(src)); /*法四*/ var arr = str.split('->'); var src= ""; arr.reverse().map(function(i) { var obj = {}; obj[i]=src; src=obj; }); console.log(JSON.stringify(src)); /*法五*/ var list = ['a','b','c','d','e']; var i= 0,code = 'var _c = {};'; var init = '_c[]={};'; for (;i<list.length;i++){ init = init.replace('[]','["'+list[i]+'"][]'); code += init.replace('[]',''); } console.log(eval('(function(){'+code+'return _c;})()')); }); </script>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 如何控制alert中的换行?\n alert(“p\np”); 请编写一个JavaScript函数 parseQu...
    heyunqiang99阅读 1,101评论 0 6
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,109评论 1 10
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,854评论 2 17
  • JS基础讲解 JavaScript组成ECMAScript:解释器、翻译DOM:Document Object M...
    FConfidence阅读 581评论 0 1
  • 我是一个很喜欢旅游的人,小的时候与父母一起,长大了与同学一起。对我来说,旅游即使一次美好的体验,也会使一同旅游的伙...
    unknowvicky阅读 1,250评论 0 0