¿Cómo puedo buscar los valores en un objeto de cadenas, algo como:
const query = "['arg1']['arg2']" const renderImage = async (index) => { const data = await fetchImage(index) const image = document.querySelector('.div') image.setAttribute("src", data`${query}`) }La función de búsqueda funciona perfectamente.
Editar:
La fuente de la imagen está en data['arg1']['arg2']. Si uso image.setAttribute("src", data['arg1']['arg2']) el código funciona bien, pero necesito hacer esto dinámicamente y concatenar cadenas me ayudará.
Resumiendo: ¿puedo obtener los mismos datos de resultado ['arg1'] ['arg2'] concatenando objeto y "consulta" (['arg1'] ['arg2'])?
puede almacenar la ruta como una matriz de claves y acceder a ella de esta manera
const query = ['arg1', 'arg2'] ... image.setAttribute("src", query.reduce((o, k)=>o[k], data))Parece que está tratando de extraer los nombres de propiedad que desea, de una cadena con formato deficiente. Idealmente, para empezar, obtendría la query en un formato mejor, para que no tenga que analizar la cadena. Por ejemplo, si pudiera obtener una consulta como dos variables separadas:
const query1 = 'arg1'; const query2 = 'arg2'; image.setAttribute("src", data[query1][query2]); también podría almacenar la consulta en un mejor tipo de datos para hacer esto, como const query = { arg1: 'arg1', arg2: 'arg2' }; luego acceda con la sintaxis de puntos data[query.arg1][query.arg2] .
Pero si debe mantener la query como esta cadena con formato extraño por alguna razón, puede hacer algo como esto, analizar la cadena en sus partes, colocarlas en una matriz y luego usar la matriz para acceder a los datos correctos dentro data .
let query = "['arg1']['arg2']"; query = query.slice( 2 ).slice( 0, -2 ).split( "']['" ); image.setAttribute( "src", data[query[0]][query[1]] );