javascript - 如何在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 概念),那么是否可以实现相同的目标,如果我的问题听起来模棱两可,请让我提前谢谢!
解决方案
您可以将属性添加到对象,就好像它们是哈希图一样,看看这个例子:
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);
推荐阅读
- node.js - sequelize node js中的事务如何工作
- r - 在 lm 摘要中添加自由度
- php - 来自 PHPFaker 的图像存储在 storage/app/public/news 文件夹中时被删除
- huawei-mobile-services - 请求从华为应用程序库中删除我的应用程序
- jquery - 在 jquery 网格的单元格中更改按钮文本(或显示隐藏按钮)
- c++ - New 为每次迭代分配相同的内存
- java - 在java中使用类名访问静态方法和静态变量而不是创建对象并调用它们有什么好处?
- javascript - 向下钻取后,Chart.js 中饼图上的单击事件不起作用
- merge - 无法从 Sourcetree 启动 KDiff3 外部合并工具
- php - 未捕获的错误:在 null 上调用成员函数 get() | $chosen_shipping_rates