簡體   English   中英

是否有大於和小於的 JavaScript 替代方案?

[英]Is there a JavaScript alternative to greater than and less than?

我正在使用一些 CMS 系統,我必須在編輯器中粘貼 HTML 代碼(包括 CSS 和 JavaScript)。

問題是它解析輸入以驗證 html 代碼。 我有這段有問題的代碼

keys.sort(function(a,b) {
    if (a.position > b.position) return 1;
    if (a.position < b.position) return -1;
    return 0;
});

雖然它是有效的 JS 語法,但解析器看到<>並說這是 html 標簽的無效語法。

我想知道 JavaScript 是否有另一種方法來檢查大於或小於不使用那些<|>符號。 有人知道嗎?

在這種特殊情況下,假設position屬性是數字類型,您可以通過以下方式實現相同的排序:

keys.sort(function(a,b) {
    return a.position - b.position;
});

但是,您應該真正考慮解決此處的真正問題,這可能與 CMS 或您使用它的方式有關。 例如,如果 CMS 將輸入驗證為 XHTML,您可能需要使用這個技巧: 腳本標簽中何時需要 CDATA 部分?

現在回答標題中的具體問題:

是否有大於和小於的 JavaScript 替代方案?

對於數字,您可以將 Math.min 用作>並將 Math.max 用作< ,如下所示:

    keys.sort(function(a,b) {
        if (Math.min(a.position,b.position) !== b.position) return 1;
        if (Math.max(a.position,b.position) !== a.position) return -1;
        return 0;
    });

你可以這樣做:

    keys.sort(function(a,b) {
        if (a.position &gt; b.position) return 1;
        if (a.position &lt; b.position) return -1;
        return 0;
    });

這不會作為 JavaScript 代碼正常運行,但如果將其粘貼到 HTML 中,它將正確顯示。

剛剛做了一個時髦的 javascript hack,它將為你工​​作:

function isLessThan(a, b) {
  return Object.is((a-b)%1, -0);
}

function isGreaterThan(a, b) {
  return a !== b && Object.is((a-b)%1, 0);
}

這似乎是因為n%10-0具體取決於n是大於還是等於 0,還是小於 0。

這是這樣使用的:

keys.sort(function(a,b) {
  if (isGreaterThan(a.position, b.position)) return 1;
  if (isLessThan(a.position, b.position)) return -1;
  return 0;
});

對於您的特定用例,我建議:

keys.sort(function(a,b) { return a.position - b.position; })

信用:邁克·麥考恩


參考: 檢查 +0 與 -0

您可以用實體替換不需要的字符。

一個php示例:

$script = str_replace( "&", "&amp;", $script );
$script = str_replace( "<", "&lt;", $script );
$script = str_replace( ">", "&gt;", $script );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM