function dataStringToArray(dataStr) {
var arr = dataStr.split("|"),
subArr = [],
i, j;
for (i = 0; i < arr.length; i += 1) {
subArr[i] = arr[i].split(",");
for (j = 0; j < 2; j += 1) {
subArr[i][j] = parseInt(subArr[i][j]);
}
}
return subArr;
}
Refactorings
No refactoring yet !
Adam
July 8, 2010, July 08, 2010 02:56, permalink
function dataStringToArray(string) {
return string.split('|').map(function(segment) {
return segment.split(',').map(function(digit) {
return parseInt(digit);
});
});
}
squidsoup
July 8, 2010, July 08, 2010 09:01, permalink
Wow, that's amazing Adam thank you - the map function is really powerful. I thought there would be an elegant functional way to achieve this!
Sean Catchpole
July 21, 2010, July 21, 2010 19:38, permalink
I know this is a little hacky, but I thought it was an interesting solution.
function dataStringToArray(str) {
return JSON.parse( '[[' + str.replace( /\|/g, '],[' ) + ']]' );
}
Given a string in this format:
"1,15|22,22|24,19|44,33"
return in nested array:
[[1,15][22,22][24,19][44,33]]