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

实现lodash的 _.get 方法
var object = { 'a': [{ 'b': { 'c': 3 } }] };
 
_.get(object, 'a[0].b.c');
// => 3
 
_.get(object, ['a', '0', 'b', 'c']);
// => 3
 
_.get(object, 'a.b.c', 'default');
// => 'default'

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

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

很容易想到用正则

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

猜你喜欢

转载自blog.csdn.net/GUDUzhongliang/article/details/108533120
今日推荐