簡體   English   中英

使用非拉丁字母作為 object 屬性名稱是一種不好的做法嗎?

[英]Is it a bad practice to use non-latin letters as object property names?

我需要以某種方式存儲格魯吉亞字母及其發音,然后返回給定字母的發音。 在我的項目中,最簡單的方法是使用 object,其中字母作為屬性名稱,發音作為相應的值。

const letters = {
    ბ: 'b',
    დ: 'd',
    ს: 's',
    წ: 'ts',
    // and so on
}

因為以后我可以這樣得到發音: return letters[georgianLetter] || "" return letters[georgianLetter] || ""

我知道任何字符串都可以用作 object 的鍵。但是使用非拉丁字母作為鍵名是不是一種不好的做法?

我不知道我還能如何實現它並仍然保持代碼簡單。 我嘗試使用一個數組:

const letters = [
    ['ბ', 'b'],
    ['დ', 'd'],
    ['ს', 's'],
    ['წ', 'ts'],
    // and so on
]

然后得到這樣的值:

return letters.find(item => item[0] === georgianLetter)[1] || ""

但這是一個更復雜的解決方案,在這種情況下,對象是首選,因為它們使代碼更短、更清晰。

但是,使用非拉丁字母作為鍵名是一種不好的做法嗎?

一點也不。 JavaScript 幾乎從一開始就定義了標識符名稱的有效字符,使用 Unicode 標准中的“標識符開始”和“標識符部分”的定義。 這意味着您甚至不必像對其他一些字符(如-/ )那樣使用格魯吉亞字母¹的括號表示法和字符串,您可以像示例中那樣可靠地使用屬性文字:

 const letters = { ბ: "b", დ: "d", ს: "s", წ: "ts", // and so on }; console.log(letters.ბ); console.log(letters.დ); console.log(letters.ს); console.log(letters.წ);

您可以將 object 用於您正在做的事情,或者Map 請參閱 MDN 的Maps vs. Objects以了解在任何給定情況下可以選擇的幾個優點。 由於您的 object 是不變的,所以沒關系,但是Map

 const letters = new Map([ ["ბ", "b"], ["დ", "d"], ["ს", "s"], ["წ", "ts"], // and so on ]); console.log(letters.get("ბ")); console.log(letters.get("დ")); console.log(letters.get("ს")); console.log(letters.get("წ"));


¹ 我承認我在這里假設它們都被歸類為“標識符開始”。 簽入 Unicode 字符屬性實用程序非常容易,例如

我認為使用 object 鍵這樣的字符不是問題。

正如評論中所建議的那樣,JavaScript 有一個專門的工具來處理這個用例。

作為更好更安全的替代方案,使用 JavaScript Map構造函數來存儲您的信件如下所示:

 const letters = new Map([ ['ბ', 'b'], ['დ', 'd'], ['ს', 's'], ['წ', 'ts'] ]); console.log(letters.get('ბ'));

暫無
暫無

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

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