Estoy tratando de tener una cadena que alterne entre dos valores. he declarado como ternario
public position: string = (this.position == "positionOne" ? "positionOne" : "positionTwo");Lo que me gustaría tener una función para cambiar directamente de "posición uno" a "posición dos" (valor de la cadena). Algo así como `
togglePosition = function() {this.position = !this.position} y luego toma la cadena opuesta como valor. ¿O necesito hacer la evaluación completa también si se declara como ternario? y luego ver if (position = "positionOne") ... hacer lo que else ... o si no al revés. ¿Usted sabe lo que quiero decir? :) ¿Qué solución me sugieres?
muchas gracias desde ya
Podría usar un objeto y las claves como el valor deseado.
function toggle(v) { return { positionOne: 'positionTwo', positionTwo: 'positionOne' }[v]; } var position = 'positionOne'; console.log(position); position = toggle(position); console.log(position); position = toggle(position); console.log(position);Como alternativa, podría usar esto (en los casos en que los valores no coincidan "a mitad de camino"):
function toggle(pos) { return 'positionOnepositionTwo'.replace(pos, ''); } pos = 'positionOne'; console.log(pos = toggle(pos)); console.log(pos = toggle(pos)); console.log(pos = toggle(pos));find function toggle(pos) { return ['positionOne','positionTwo'].find(x => x !== pos); } pos = 'positionOne'; console.log(pos = toggle(pos)); console.log(pos = toggle(pos)); console.log(pos = toggle(pos));Por supuesto, podría usar Array.find para hacer lo mismo que mencionó Nina:
var log = console.log; function toggle(v) { return ['positionOne','positionTwo'].find(s=>s!=v); } var position = 'positionOne'; log( position ); position = toggle(position); log( position ); position = toggle(position); log( position );