首页 > 解决方案 > 如何在javascript中将值存储在hashmap中

问题描述

我正在用 javascript 解析 xml 文件,我正在提取它的所有值

function loadXMLDoc() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
  myFunction(this);
}
};
xmlhttp.open("GET", "/ccm/rpt/repository /workitem?fields=workitem/projectArea/*", true);
xmlhttp.send();
}

function myFunction(xml) {
var x,y,j, i, xmlDoc, txt,txt1;
xmlDoc = xml.responseXML;
txt = "";
txt1="";
x = xmlDoc.getElementsByTagName("contextId");
for (i = 0; i< x.length; i++) {
txt += x[i].childNodes[0].nodeValue;

}
y = xmlDoc.getElementsByTagName("name");
for (j = 0; i< y.length; j++) {
txt1 += y[j].childNodes[0].nodeValue;
}
}

现在我的目标是将名称的值存储为键,将 contextId 的值存储为值(HashMap 概念),那么是否可以实现相同的目标,如果我的问题听起来模棱两可,请让我提前谢谢!

标签: javascripthashmap

解决方案


您可以将属性添加到对象,就好像它们是哈希图一样,看看这个例子:

var myObj = {prop1: 12};
var propName = "prop2";

myObj[propName] = 10;

console.log(myObj);

哪个输出:

{prop1: 12, prop2: 10}

在您的示例中,假设 x 和 y 长度相等,然后我们可以在单个循环中添加到对象:

var x,y,j, i, xmlDoc, myHashMap;

xmlDoc = xml.responseXML;
myHashMap = {};

x = xmlDoc.getElementsByTagName("contextId");
y = xmlDoc.getElementsByTagName("name");

for (i = 0; i< x.length; i++) {
  var value = x[i].childNodes[0].nodeValue;
  var key = y[i].childNodes[0].nodeValue;
  myHashMap[key] = value;
}

console.log(myHashMap);

推荐阅读