在 JavaScript 中使用对象作为 HashMap
Use an object as a HashMap in JavaScript
我将在JavaScript中使用一个对象作为HashMap。我想添加一个键,该键将成为该对象的新属性并为其赋值。然后,过了一会儿,获取该值并对其进行操作。
我想提取所有链接。将页面的 URL 保存为键,将其链接数组保存为值。因此,我写了以下几行。
假设页面的网址 http://www.google.com
var test = {};
var links = document.getElementsByTagName('a');
var currentURL = document.URL;
test.currentURL = links;
在这里,我的期望是我有一个键,它与它的值一起 http://www.google.com,它是一个包含页面上所有链接的数组。之后,我想写下以下行
var inProcessURL = allTheURLs[0].url;
var arrayOfLinks = test.inProcessURL;
然后基于此数组工作。但是,我发现在第一部分,我正在创建"当前URL"而不是"http://www.google.com"的密钥,这导致我以后无法引用它。
有什么方法可以基于我在 JavaScript 中实现我的目标,或者我必须将数据结构从对象更改为数组?
我不知道我将在不同的步骤中引用哪个键。它们将从数组中提取的东西。
首先,你的变量links
是一个nodeList
对象,它是一个节点列表。 因此,要引用该列表中的 DOM 对象,您需要遍历该列表。
我不是 100% 确定我理解您要做什么,但是如果您想遍历所有链接并按 URL 创建它们的哈希图,其中 URL 是索引,数据是 DOM 对象,您可以这样做:
var map = {};
var links = document.getElementsByTagName("a"), obj;
for (var i = 0; i < links.length; i++) {
obj = links[i];
map[obj.href] = obj;
}
这允许您按 URL 索引到映射中,以获取链接到该 URL 的 DOM 对象。 注意:如果您有任何链接包含与其他链接相同的 URL,则映射将包含引用该 URL 的最后一个 DOM 对象,因为映射本身不支持重复项。
因此,如果您想查找哪个 DOM 对象链接到特定变量中的链接,您可以这样做:
var url = "http://www.google.com";
var obj = map[url];
请记住,此映射不按任何特定顺序排列(如果要保留顺序,则需要一个数组)。 您可以按照上行索引到地图中,也可以像这样迭代地图中的所有 URL:
for (var url in map) {
// url is the URL, map[url] is the DOM object for that URL
if (url === "http://www.google.com") {
map[url].style.color = "red";
}
}
- 引用对象中的通用值
- jQuery匹配JSON对象的部分文本
- 节点导出返回一个空对象
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 全局变量和全局对象的属性之间有什么区别吗
- 比较从函数和生成的日期对象
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 调整窗口大小时,可拖动的对象会出现在容器外部
- 如何使用javascript从主svg对象动态创建svg视图框
- 如何使用json将对象列表从java转换为javascript
- 序列化数据属性中对象的最可靠方法
- 如何访问声音管理器2创建的声音对象
- FabricJs-限制主对象内添加对象的移动区域
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在 JavaScript 中使用对象作为 HashMap
- 传递给 JavaScript 函数的 HashMap 对象
- 从struts中获取一个java对象(arraylist/hashmap).通过ajax执行Xx操作