Así que tengo un objeto. Y el objeto tiene 6 variables (a, b, c, d, e, f)
Algo como esto:
let obj={ a:0, b:0, ... ... }Estoy pasando este objeto como un parámetro de función y la función tiene que establecer los valores de todas las variables (a a f). Los valores simplemente se copian de otras variables (llamémoslas u, v, w, x, y, z).
Según la elección del usuario (mi propia), a podría asignarse a w o y o z, etc. Actualmente estoy haciendo esto manualmente así:
obj.a=x; obj.b=y; obj.c=w; ... ...El problema es que quiero que este patrón de mapeo sea muy flexible. Quiero cambiar todo el mapeo con el menor cambio de codificación y quiero que la codificación sea lo más mínima/limpia posible. Actualmente hay 4 posibles opciones de mapeo basadas en cómo quiero hacerlo en tiempo de ejecución. Pero quiero agregar más opciones y, como se mencionó anteriormente, quiero que las asignaciones sean muy fáciles de cambiar.
¿Debo declarar una cadena de mapeo y usar eval para automatizar el mapeo? Entonces tendría que simplemente cambiar la disposición de las cadenas y los valores se asignarán automáticamente. Algo como esto:
var mapping="xyzuvw", values="abcdef"; for(var i=0;i<6;++i) //using 6 since mapping string is of 6 chars eval("obj."+values[i]+"="+mapping[i]);Como puede ver, solo tengo que cambiar (o crear una nueva) cadena de mapeo y toda la secuencia de mapeo se automatiza.
El software está destinado enteramente para mi uso personal/privado.
¿Debo usar eval() para automatizar este proceso de mapeo o debo editar manualmente (y crear una nueva) la codificación de mapeo si quiero cambiar el patrón de mapeo?
Como en, ¿el uso de eval() hará que el código sea propenso a problemas de procesamiento, errores de tiempo de ejecución, etc.?
¿Será más fácil mantener el código en el futuro con eval() o con mapeo manual?
Editar para agregar:
Para los miembros que me están refiriendo a la propiedad del objeto de acceso dinámico usando variabl , tenga en cuenta que estoy tratando de automatizar el nombre de la variable de destino (cuyo valor queremos copiar) y no el nombre de la variable base (cuyo valor queremos cambiar). Como en, quiero automatizar si obj.a = x; o si obj.a=y;
Gracias.