使用E4X在XML列表中查找不同的值
Using E4X to find distinct values in an XML list
考虑以下XML片段:
<book id="5" />
<book id="15" />
<book id="5" />
<book id="25" />
<book id="35" />
<book id="5" />
如何编写E4X语句/查询以获得id
属性中唯一值的列表?我在JavaScript非浏览器环境中使用E4X。
5
15
25
35
是否有distinct()
或groupby()
的任何一种方法,将有助于?如果不是,这怎么可能实现呢?
没有惟一或分组方法。但是,E4X允许您快速创建值的XMLList(非唯一值)。
var xmlSnippet = <stuff><book id="5"/>
<book id="15"/>
<book id="5"/>
<book id="25"/>
<book id="35"/>
<book id="5"/>
</stuff>;
var attributes = xmlSnippet['book'].attribute("id");
为了使其唯一,您可以获取XMLList,遍历它,并将每个元素存储为对象中的键值。
var uniqueAttributes = new Object ();
for each (var a in attributes)
{
uniqueAttributes[a] = null;
}
要访问这些值,使用for in循环(而不是for each in)遍历它们
for (var u in uniqueAttributes)
{
// do something with u
}
这假定所讨论的属性值不包含管道"|"字符。如果是这样,那么将最底部的管道字符更改为值中没有的其他内容。这些变量是静态类型的,用于JIT执行。希望这能满足你的需要。
var idvalues = function (x) { //x = node name
var a = document.getElementsByTagName(x),
b,
c = [],
d,
e;
for (b = a.length - 1; b > -1; b -= 1) { // gather all the id values into an array
c.push(a[b].getAttribute("id"));
}
for (b = c.length - 1; b > -1; b -= 1) {
if (c[b] !== "") {
for (d = b - 1; d > -1; d -=1) {
if (c[b] === c[d]) {
c[d] = "";
}
}
}
}
e = c.join("|");
c = e.split("|");
return c;
};
相关文章:
- 正在全局范围中查找JavaScript函数
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- es6 相当于下划线查找位置
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何在不传递此信息的情况下查找被调用的元素
- Lodash 从值数组中查找数组中的值
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 使用RegExp查找url中的字符
- 查找元素高度,包括边距
- 使用JS查找数组的平均值
- 查找最短和最长日期
- 猫鼬在特定记录中查找嵌套记录
- 使用javascript在MVC中查找网格长度时出错
- 在Javascript数组中查找绝对最大值
- 在javascript中查找单词
- JavaScript 在数组中查找缺少的数字
- 键按正则表达式以查找具有负值的小数
- 使用E4X在XML列表中查找不同的值