纯JavaScript中的HashMap示例

4

我有如下字符串。

10=150~Jude|120~John|100~Paul@20=150~Jude|440~Niroshan@15=111~Eminem|2123~Sarah

我需要一种通过给出ID来检索字符串的方法。
例如:我输入20;返回150~Jude|440~Niroshan
我认为我需要使用HashMap来实现这个功能。
键 > 20
值 > 150~Jude|440~Niroshan
我正在寻找一种纯JavaScript方法。非常感谢您的帮助。

https://gist.github.com/StephanBijzitter/6706de176c5c1e4dc26d 有一个依赖项,但它很容易更改,因为它只使用了事件处理程序。 - Stephan Bijzitter
2个回答

3
如果您从服务器响应中得到以上字符串,最好将其以JSON格式转换为以下对象格式。如果您无法控制响应的获取方式,可以使用stringarray方法将字符串转换为对象。

在您的情况下创建一个对象是更好的选择。

  1. 通过@符号拆分字符串
  2. 循环遍历拆分数组中的所有子字符串
  3. 在每次迭代中,再次通过=符号拆分字符串以获取键和值
  4. 在对象中添加键值对
  5. 使用数组下标符号(例如myObj[name])从对象中获取键的值

var str = '10=150~Jude|120~John|100~Paul@20=150~Jude|440~Niroshan@15=111~Eminem|2123~Sarah';

var hashMap = {}; // Declare empty object

// Split by @ symbol and iterate over each item from array
str.split('@').forEach(function(e) {
  var arr = e.split('=');

  hashMap[arr[0]] = arr[1]; // Add key value in the object
});

console.log(hashMap);

document.write(hashMap[20]); // To access the value using key


2
如果您可以使用ES6功能,您可能考虑使用内置对象Map,它将为您提供有用的方法来检索/设置/...条目(等等)开箱即用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接