nodejs与js中的通病“多级属性”取值崩溃的解决方案
发布于 5 年前 作者 abans 3275 次浏览 最后一次编辑是 4 年前 来自 分享

库下载地址:Acan.js 在javascript中直接使用二级以上的属性的时候,会经常意外的让程序挂掉,原因是父属性为undefined,从而导致子属性取值崩溃 以下是Acan库中的解决方案,通过递归循环的去判断父属性是否存在,一级一级往下取值,如果取不到值可以付默认值 同时支持数组和对象的直接取值 <pre><code> /*

  • 直接获取对象多级属性值
  • Acan.objGet(obj,‘a.0.c’) = obj.a[0].c
  • Acan.objGet(obj,‘a.b.c’) = obj.a.b.c */ //df Mixed default (默认值) Acan.objGet=function(obj,str,df){ var rs=’’,p,o; if(Acan.isStr(str)){ p=str.split(’.’); } if(Acan.isObj(obj) || Acan.isArr(obj)){ o=obj; p.forEach(function(v){ if(v.length<1 || (!Acan.isObj(o) && !Acan.isArr(o))){ o=undefined; return; } if(o[v]){ o=o[v]; }else{ o=undefined; } }); } if(df!==undefined && o===undefined) o=df; return o; } </code></pre>
3 回复

YUI里有个namespace的方法 可以实现多级 自豪地采用 CNodeJS ionic

lodash _.get没烦恼

回到顶部