I need to parse a lot of XML data for objects. I thought of three ways to get this XML object:
XML
<myXml>
<tag1 val = "someVal"/>
<tag2 val = "someVal"/>
<tag3 val = "someVal"/>
</myXml>
Option 1: using .find ()
var xml = getMyXml();
var myObj = {
1 : xml.find('tag1').attr('val'),
2 : xml.find('tag2').attr('val'),
3 : xml.find('tag3').attr('val'),
}
Option 2: using .each ()
var xml = getMyXml();
var myObj = {
1 : 'tag1',
2 : 'tag2',
3 : 'tag3',
}
$.each(myObj, function(i,e){
myObj[i] = xml.find(e).attr('val');
});
Option 3: Array
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');
}
Using this function perf http://jsperf.com/each-vs-arraysdfsdf option 2 was 82% faster than both other options. Why?
source
share