我需要以某種方式存盤格魯吉亞字母及其發音,然后回傳給定字母的發音。在我的專案中,最簡單的方法是使用一個物件,其中字母作為屬性名稱,發音作為相應的值。
const letters = {
?: 'b',
?: 'd',
?: 's',
?: 'ts',
// and so on
}
因為以后我可以這樣得到發音:
return letters[georgianLetter] || ""
我知道任何字串都可以用作物件的鍵。但是,使用非拉丁字母作為鍵名是一種不好的做法嗎?
我不知道我還能如何實作它并仍然保持代碼簡單。我嘗試使用一個陣列:
const letters = [
['?', 'b'],
['?', 'd'],
['?', 's'],
['?', 'ts'],
// and so on
]
然后得到這樣的值:
return letters.find(item => item[0] === georgianLetter)[1] || ""
但這是一個更復雜的解決方案,在這種情況下,物件是首選,因為它們使代碼更短、更清晰。
uj5u.com熱心網友回復:
但是,使用非拉丁字母作為鍵名是一種不好的做法嗎?
一點也不。JavaScript 幾乎從一開始就定義了識別符號名稱的有效字符,使用 Unicode 標準中的“識別符號開始”和“識別符號部分”的定義。這意味著您甚至不必像對其他一些字符(如-or /)那樣使用格魯吉亞字母1的括號表示法和字串,您可以像示例中那樣可靠地使用屬性文字:
顯示代碼片段
const letters = {
?: "b",
?: "d",
?: "s",
?: "ts",
// and so on
};
console.log(letters.?);
console.log(letters.?);
console.log(letters.?);
console.log(letters.?);
您可以為您正在做的事情使用一個物件,或者一個Map. 請參閱 MDN 的Maps vs. Objects以了解在任何給定情況下可以選擇的幾個優點。由于您的物件是不變的,所以會很好,但是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("?"));
1 我承認我在這里假設它們都被歸類為“識別符號開始”。在 Unicode Character Properties Utility 中檢查非常容易,例如?.
uj5u.com熱心網友回復:
我認為使用這樣的字符作為物件鍵不是問題。
正如評論中所建議的那樣,JavaScript 有一個專門的工具來處理這個用例。
作為更好、更安全的替代方案,使用 JavaScriptMap建構式來存盤您的字母將如下所示:
const letters = new Map([
['?', 'b'],
['?', 'd'],
['?', 's'],
['?', 'ts']
]);
console.log(letters.get('?'));
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/534632.html
標籤:javascript
