gpt4 book ai didi

javascript - 使用非拉丁字母作为对象属性名称是一种不好的做法吗?

转载 作者:行者123 更新时间:2023-12-05 01:22:11 26 4
gpt4 key购买 nike

我需要以某种方式存储格鲁吉亚字母及其发音,然后返回给定字母的发音。在我的项目中,最简单的方法是使用一个对象,其中字母作为属性名称,发音作为相应的值。

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

因为后面我可以这样读音:返回字母[georgianLetter] || ""

我知道任何字符串都可以用作对象的键。但是,使用非拉丁字母作为键名是一种不好的做法吗?

我不知道我还能如何实现它并仍然保持代码简单。我尝试使用数组:

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

然后像这样获取值:

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

但它的解决方案有点复杂,在这种情况下,对象是首选,因为它们使代码更短、更清晰。

最佳答案

But is it a bad practice to use non-latin letters for key names?

完全没有。 JavaScript 已为 identifier names 定义了有效字符几乎从一开始就包含在内,使用 Unicode 标准中的“标识符开始”和“标识符部分”的定义。这意味着您甚至不必像对某些其他字符(如 -/)那样对格鲁吉亚字母¹使用括号表示法和字符串,您可以可靠地使用属性与示例中一样的文字:

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("წ"));


¹ 我承认我在这里假设它们都被归类为“标识符开始”。在 Unicode 字符属性实用程序中检查很容易,例如 for .

关于javascript - 使用非拉丁字母作为对象属性名称是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74457941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com