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));

İlgili makaleler