我必须将许多XML数据解析为对象。我想到了三种将XML转换为对象的方法:
XML格式
<myXml>
<tag1 val = "someVal"/>
<tag2 val = "someVal"/>
<tag3 val = "someVal"/>
</myXml>
选项1:使用.find()
var xml = getMyXml();
var myObj = {
1 : xml.find('tag1').attr('val'),
2 : xml.find('tag2').attr('val'),
3 : xml.find('tag3').attr('val'),
}
选项2:使用.each()
var xml = getMyXml();
var myObj = {
1 : 'tag1',
2 : 'tag2',
3 : 'tag3',
}
$.each(myObj, function(i,e){
myObj[i] = xml.find(e).attr('val');
});
选项3:阵列
var xml = getMyXml();
var myArr = ['tag1','tag2','tag3']
var myObj = {};
for(var i = 0; i < myArr.length; i++){
myObj[i] = xml.find(myArr[i]).attr('val');
}
使用此性能http://jsperf.com/each-vs-arraysdfsdf 选项2比其他两个选项都快82%。为什么?
如果您不将数组和jquery混合使用,只需将纯JavaScript函数与array一起使用,则结果将完全不同,并且速度会更快。使用jquery时,选择器的每个开销都得到了优化,这可能是它在测试用例中更快的原因。
var len = digitalArr.length; //Cache the length
var i = 0;
for (; i < len ; i++) {
obj[i] = xmlobj.getElementsByTagName(''+digitalArr[i]+'')[0].getAttribute('val');
}
在这里检查jsperf结果
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句