实现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;
-
}
转载:https://blog.csdn.net/GUDUzhongliang/article/details/108533120
查看评论