Estoy trabajando en la aplicación React, pero creo que es muy probable que sea un problema de JavaScript. Tengo muchas variables con un patrón, VARIABLE_NAME_{number} , ejemplo, FOO_1, FOO_2 ... etc. En mi función, toma el índice como entrada y devuelve la salida asignada.
import power from 'customClass'; const getOneOfFoo = (theIndex) => { power() .then(data => { let result = data?.first?.second?.FOO_{theIndex}?.name ; // how can I declare this one with passing input? // example, if theIndex=59, I want to have // let result = data?.first?.second?.FOO_59?.name; resolve({ result: result }); }) .catch(err => console.log(err)) });La estructura del objeto de datos es así,
data |-first |-second |-FOO_1 |-name |-FOO_2 |-name |-FOO_3 |-name |-FOO_4 |-name ... En la línea 5, quiero asignar el result dinámicamente. ¿Cómo puedo conseguir esto?
Puedes tratarlo como un diccionario. Aquí hay un ejemplo:
const data = { 'FOO_1': { name: 'Kenobi' }, 'FOO_2': { name: 'Skywalker' }, 'FOO_3': { name: 'Yoda' }, 'FOO_4': { name: 'Kylo' }, 'FOO_5': { name: 'Sidious' } } function getVar(index) { let result = data?.[`FOO_${index}`]?.name; return result; } console.log(getVar(1)); // expected output: Kenobi console.log(getVar(2)); // expected output: Skywalker console.log(getVar(3)); // expected output: Yoda console.log(getVar(4)); // expected output: Kylo console.log(getVar(5)); // expected output: Sidious console.log(getVar(6)); // expected output: undefinedEntonces, para su caso, probablemente sería algo como esto:
import power from 'customClass'; const getOneOfFoo = (theIndex) => { power() .then(data => { let result = data?.first?.second?.[`FOO_${theIndex}`]?.name; resolve({ result: result }); }) .catch(err => console.log(err)) });Y por cierto, la resolución no parece estar definida.
let result = data?.first?.second[`FOO_${theIndex}`]?.name ;puede usar [] con el interior es una cadena que es el nombre de la propiedad