Czy mogę przekonwertować łańcuch reprezentujący wartość boolean (np. 'true', 'false') na typ wewnętrzny w JavaScript?
Mam ukryty formularz w HTML, który jest aktualizowany na podstawie wyboru użytkownika'na liście. Formularz ten zawiera niektóre pola, które reprezentują wartości boolean i są dynamicznie wypełniane wewnętrzną wartością boolean. Jednak po umieszczeniu tej wartości w ukrytym polu wejściowym staje się ona ciągiem znaków.
Jedynym sposobem, jaki mogłem znaleźć, aby określić wartość boolean pola, gdy została ona przekształcona w ciąg znaków, było uzależnienie od dosłownej wartości jego reprezentacji łańcuchowej.
var myValue = document.myForm.IS_TRUE.value;
var isTrueSet = myValue == 'true';
Czy istnieje lepszy sposób, aby to osiągnąć?
var isTrueSet = (myValue == 'true');
Możesz to zaostrzyć, używając operatora tożsamości (==
), który nie dokonuje żadnych niejawnych konwersji typów, gdy porównywane zmienne mają różne typy, zamiast operatora równości (==
).
var isTrueSet = (myValue === 'true');
Powinieneś prawdopodobnie być ostrożny w używaniu tych dwóch metod dla swoich konkretnych potrzeb:
var myBool = Boolean("false"); // == true
var myBool = !!"false"; // == true
Każdy ciąg znaków, który nie jest ciągiem pustym będzie miał wartość true
przy ich użyciu. Chociaż są to najczystsze metody, jakie mogę sobie wyobrazić, jeśli chodzi o konwersję na boolean, myślę, że nie są tym, czego szukasz.
Pamiętaj, aby dopasować wielkość liter:
var isTrueSet = (myValue.toLowerCase() === 'true');
Ponadto, jeśli jest to pole wyboru elementu formularza, możesz również wykryć, czy pole wyboru jest zaznaczone:
var isTrueSet = document.myForm.IS_TRUE.checked;
Zakładając, że jeśli jest zaznaczone, jest "set" równe true. To ocenia się jako true/false.