将对象文字用作哈希表是一种好习惯吗?
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 中的变化。正是我想要的。谢谢。以上是关于将对象文字用作哈希表是一种好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章