javascript - İkili string değerler arasında ternary ifadeyle doğru şekilde geçiş yapma
İki değer arasında geçiş yapan bir dizeye sahip olmaya çalışıyorum. Üçlü operatör olarak tanımladım
public position: string = (this.position == "positionOne" ? "positionOne" : "positionTwo");
Doğrudan "positionOne""den "positionTwo""ye (string değeri) geçiş yapacak bir fonksiyona sahip olmak istiyorum. Şuna benzer bir şey `
togglePosition = function()
{this.position = !this.position}
ve sonra değeri olarak karşıt diziyi alıyor. Ya da eğer üçlü olarak tanımlanmışsa tamamen değerlendirmeyi de yapmam gerekir mi? ve sonra if (position="positionOne")... istediğini yap.. veya else tersini. Ne demek istediğimi anlıyorsun? :) Bana ne çözüm önerirsin?
Şimdiden çok teşekkürler
Cevap #1
Bir nesne ve anahtarları istediğiniz değer olarak kullanabilirsiniz.
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);Cevap #2
Alternatif olarak bunu kullanabilirsiniz (değerler "yarı yolda" eşleşmediği durumlarda):
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 ile alternatif
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));