ZBLOG

javascript Map数据结构,value的值存放一个数组,遇到相同的key可以动态塞入元素

在 JavaScript 中,Map 数据结构允许你将任何类型的值作为键和值存储。如果你想要在遇到相同的键时,将值动态地添加到数组中,可以使用以下方法:

  1. 检查是否存在该键:如果存在,就获取当前的数组并添加新元素;如果不存在,就创建一个新的数组并初始化它。

以下是示例代码:

  1. const aclMap = new Map();
  2. // 函数用于添加值
  3. function addToMap(key, value) {
  4. // 检查 map 中是否已有该 key
  5. if (aclMap.has(key)) {
  6. // 如果有,获取现有的数组,并推入新值
  7. const existingArray = aclMap.get(key);
  8. existingArray.push(value);
  9. } else {
  10. // 如果没有,创建新的数组并初始化
  11. aclMap.set(key, [value]);
  12. }
  13. }
  14. // 示例数据
  15. const jsonObj = [
  16. { ip: '192.168.1.1', port: 8080, scheme: 'http', proxyvalue: 'value1' },
  17. { ip: '192.168.1.2', port: 9090, scheme: 'https', proxyvalue: 'value2' },
  18. { ip: '192.168.1.1', port: 7070, scheme: 'http', proxyvalue: 'value3' } // 重复 IP 示例
  19. ];
  20. // 遍历 jsonObj 并将其添加到 Map 中
  21. for (let i = 0; i < jsonObj.length; i++) {
  22. const entry = {
  23. port: jsonObj[i].port,
  24. scheme: jsonObj[i].scheme,
  25. proxyvalue: jsonObj[i].proxyvalue,
  26. };
  27. // 使用 JSON.stringify() 将对象转换为字符串,以便将整个对象存储为一个值(如需要)
  28. addToMap(jsonObj[i].ip, entry);
  29. }
  30. // 打印结果以查看 Map 内容
  31. console.log(aclMap);

注意事项:

  • 在这个例子中,每当调用 addToMap 函数时,它会检查给定的 key 是否已经存在于 aclMap 中。
  • 如果存在,它会从 Map 中检索现有数组,然后将新元素推入其中。
  • 如果不存在,则创建一个新的数组,并用初始值填充它。

运行上述代码后,你会发现对于相同的 IP 地址(例如 '192.168.1.1'),所有相关条目都会被收集到同一个数组中。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22092

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?