¿Cómo puedo acceder a diferentes objetos JSON en JavaScript mediante una variable que contiene la ruta del atributo?
var item = { "car": { "manufacturer": "Ford", "model": "Taunus" "surface": { "color": "silver", "type": "metallic" } "built (year)": "1975" }; let foo = "model"; let bar = "surface.color"; consloe.log("Model: " + item[foo]); // Output: "Taunus" console.log("Surface color:" + item[bar]); // Output: "undefined", Desired output "silver"Esta notación representa solo un nivel jerárquico por conjunto de paréntesis, por supuesto. ¿Existe una forma fácil y elegante de acceder a varios niveles con solo una variable de etiquetado como "uno.dos" y "uno.dos.tres"?
Puede crear una función que dividirá la cadena con . (punto) como delimitador en una matriz de cadenas y utilícelos para atravesar el objeto en una función reductora.
const item = { "car": { "manufacturer": "Ford", "model": "Taunus", "surface": { "color": "silver", "type": "metallic" }, "built (year)": "1975" } } const foo = "car.model"; const bar = "car.surface.color"; function get(path) { const parts = path.split("."); return parts.reduce((obj, part) => obj[part], item); } get(foo); // should return "Taunus" get(bar); // should return "silver"