Como obtener el valor de un object de una ruta especifica - JavaScript
Bueno, bla bla bla, buenos dias y eso, empecemos con el tuto
Veremos "otra vez" una funcion de lodash convertida a vanillajs, asi que empecemos, la funcion _.get() de lodash te permite obtener el valor o una propiedad de un object usando una ruta especifica este seria un buen ejemplo;
var obj = {
'a': [{
'b': {
'c': 3
}
}]
};
// returns 3
_.get(obj, 'a[0].b.c');
// returns 3
_.get(obj, ['a', '0', 'b', 'c']);
// returns \"default\"
_.get(obj, 'a.b.c', 'default');
Muy bien asi que empecemos a recrear esta funcion en vanillajs, para recrearla la
haremos con 3 parametros como la funcion original, estos son:
"obj", "path" y "default" las cuales representan, el object, la ruta, y el valor por
defecto si no se encuentra la ruta
var get = function (obj, path, def) {
// El codigo estaria aqui
};
Ahora bien, usar el path que pone el usuario puede llegar a ser un poco complejo
para nosotros pero si tienes buena lógica de programación lo entenderás.
Lo que haremos sera un loop que por cada elemento del path que insertes, una variable
insertara el valor del elemento en si, por ejemplo ['a','0','b','c'], en este en la
primera interaccion tomara el valor de a el cual es un array, luego en la siguiente
interaccion tomara a "a" como el elemento y este es un array, entonces tomara el
valor "0" del array a, el valor 0 es un object, entonces tomara el valor "b" del
object "0" y asi sucesivamente, aqui esta la funcion que lo hace convertida a vanilla
var get = function (obj, path, def) {
// Aqui se creaa la variable de la que les hablaba
var current = obj;
// Por cada item tomara su valor y lo insertara en current
for (var i = 0; i < path.length; i++) {
// Si el item no se encuentra retornara el def o undefined
if (!current[path[i]]) return def;
// En caso contrario asignara a current el valor
current = current[path[i]];
}
return current;
};
Bueno chavos hasta aquí el tutorial de hoy, recuerden que las habilidades técnicas
Un momento mientras cargamos los comentarios
{{item.date}}
{{item.image}}
{{subitem.date}}
{{subitem.image}}