【问题标题】: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”等,您需要注意一些隐式属性...

标签: javascript hash hashtable


【解决方案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 中的变化。正是我想要的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
  • 2010-09-28
  • 2012-11-30
  • 1970-01-01
相关资源
最近更新 更多