实现类似loash中的get方法

291 阅读1分钟

实现类似lodash.get方法

根据 object对象的path路径获取值。 如果解析 value 是 undefined 会以 defaultValue 取代。

_.get(object, path, [defaultValue])

例子

var object = { 'a': { 'b': { 'c': 3 } }};
	
_.get(object, 'a.b.c', 'default');
// => 3

实现

const get = (obj, attrs, default = null) => {
	let arr = attrs.split('.');
	for(let i = 0; i < arr.length; i++){
		// 查看是否存在子叶
		if(Object.prototype.toString.call(obj[arr[i]]) === '[object Object]'){
			obj = obj[arr[i]]; // 存在子叶 => 将子叶的键名与key值对应起来
		}else{
			if(obj[arr[i]]){
			  return obj[arr[i]]
			}else{
				break // 不存在attrs里面的键,则跳出
			}
		}
	}
	return default; // 没找到
}