我在Web應用程序中遇到了布爾操作的一個奇怪問題。我有一個1
和0
對true
和false
響應的服務。的REST API(內部一個),我打電話,只發送這樣的輸出:當輸入爲布爾值時,來自REST API的0或1的任何值返回true
GET /stuff/id/5
0
GET /stuff/id/7
1
基於從服務器輸出的上方,我使用撥動開關在前端檢查使它打開或關閉。這使得它的代碼是:
$(this).find(".toggle").toggles({
"on": requestContent
});
我明白,有時候,1
和0
可能不能被解釋爲布爾真或假,所以我打算用!!
迫使他們成功轉化成true
和false
。
$(this).find(".toggle").toggles({
"on": !!requestContent
});
但儘管如此,我失望的是,它顯示了所有在ON位置的開關,比對的方式。不知何故,它的數值只有true
,其值爲1
和0
。
我甚至試圖使服務器調用的模擬版本,我的前端在這裏,這正是複製了問題:
$(function() {
// Mimicking the HTTP Response.
var states = ["1", "0", "0", "1", "1"];
// This loop loops through all the values and sets the state of the switch.
$('.toggle').each(function (i) {
$(this).toggles({
"on": !!states[i]
});
});
});
body {background-color: #f5f5f5;}
ul, li {margin: 0; padding: 0; list-style: none;}
ul {width: 150px; margin: auto; background-color: #fff; padding: 10px; border-radius: 3px; border: 1px solid #eee;}
ul li {padding: 10px;}
ul li span,
ul li .toggle {width: 50px; display: inline-block; vertical-align: middle;}
ul li span {width: 75px; line-height: 1;}
<link rel="stylesheet" href="https://cdn.rawgit.com/simontabor/jquery-toggles/master/css/toggles-full.css" />
<script src="https://code.jquery.com/jquery-2.2.4.js"></script>
<script src="https://cdn.rawgit.com/simontabor/jquery-toggles/master/toggles.min.js"></script>
<ul>
<li>
<span>Item 1</span>
<div class="toggle toggle-light"></div>
</li>
<li>
<span>Item 2</span>
<div class="toggle toggle-light"></div>
</li>
<li>
<span>Item 3</span>
<div class="toggle toggle-light"></div>
</li>
<li>
<span>Item 4</span>
<div class="toggle toggle-light"></div>
</li>
<li>
<span>Item 5</span>
<div class="toggle toggle-light"></div>
</li>
</ul>
正如你可以看到,所有的發生甚至!!0
返回true
。我該如何解決這個問題?這背後的奧祕是什麼?
不錯,很好的解釋 – BNN