飞道的博客

前端企业面试题:企业真实案例——32

432人阅读  评论(0)
实现lodash的 _.get 方法

  
  1. var object = { 'a': [{ 'b': { 'c': 3 } }] };
  2. _. get( object, 'a[0].b.c');
  3. // => 3
  4. _. get( object, [ 'a', '0', 'b', 'c']);
  5. // => 3
  6. _. get( object, 'a.b.c', 'default');
  7. // => 'default'

 

当第2个参数为数组时,我们比较好处理

问题的关键就是把字符串如何变成数组的形式

很容易想到用正则


  
  1. _.get = function(obj, path, defaultValue){
  2. var final_val = null;
  3. var temp = null;
  4. //如果是字符串,那么转化为数组形式
  5. //将 [] . 这些符号去掉即可
  6. if( typeof path === "string") {
  7. path = path.replace( /\[(\d)\]/g, '$1').replace( /\./g, '').split( '');
  8. }
  9. temp = obj[path[ 0]];
  10. //遍历数组,依次访问
  11. for( var i= 1; i<path.length; i++) {
  12. temp = temp[path[i]];
  13. if(!temp) break;
  14. }
  15. return temp ? temp : defaultValue;
  16. }

转载:https://blog.csdn.net/GUDUzhongliang/article/details/108533120
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场