将对象文字用作哈希表是一种好习惯吗?

Posted

技术标签:

【中文标题】将对象文字用作哈希表是一种好习惯吗?【英文标题】:Is it good practice to use a object literal as a hash table? 【发布时间】:2018-05-05 10:11:13 【问题描述】:

使用对象字面量作为哈希表是一种好习惯吗?即使用属性名称作为键来获取特定的映射值。

例如:

var colorArray = [
     code: "#4286f4", name: "Blue" , 
     code: "#fc4d02", name: "Red" 
]

var hashTable = 

colorArray.forEach(color => 
  hashTable[color.code] = color.name
)

这对于对象字面量是否可以接受,或者是否有一种模式可以更好地处理 javascript 中的哈希映射?

【问题讨论】:

我认为这更像是一个代码审查问题,而不是堆栈溢出问题。 没有 JSON 对象之类的东西。 JSON 是一种文本数据格式。但是使用对象字面量作为 hashmap 是常见的做法 请注意,使用对象作为 hashmap 是一种完全合法的模式,但是如果你可以使用 es6,那么内置的 Map 类型也是可用的。 是的,它是可序列化的,而且速度非常快,不像地图。对于“toString”、“hasOwnProperty”等,您需要注意一些隐式属性... 【参考方案1】:

在 ES6 之前,使用文字对象是在 JS 中使用 hashmap 的唯一方法。从ES6开始,也可以使用Map:

const colorArray = [code: "#4286f4" , name: "Blue", code: "#fc4d02", name: "Red"];

const map = new Map(colorArray.map(( code, name ) => [code, name]));

console.log(map); // look at the browser's console

console.log(map.get("#4286f4"));

【讨论】:

不知道他在 ES6 中的变化。正是我想要的。谢谢。

以上是关于将对象文字用作哈希表是一种好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章

始终连接 SQL 表是一种好习惯吗?

在 Perl 中,哈希键周围的引号是一种好习惯吗?

将函数放入 javascript 对象中是一种好习惯吗? [复制]

C# 中的重载运算符实际上是一种好习惯吗? [关闭]

使用“视图”进行分组是一种好习惯吗?

在 Room 数据库实体上实现 Parcelable 是一种好习惯吗?