8740fb2a869928fd0c39531902a83477

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]]

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 !

A8d3f35baafdaea851914b17dae9e1fc

Adam

July 8, 2010, July 08, 2010 02:56, permalink

1 rating. Login to rate!
function dataStringToArray(string) {
    return string.split('|').map(function(segment) {
        return segment.split(',').map(function(digit) {
            return parseInt(digit);
        });
    });
}
8740fb2a869928fd0c39531902a83477

squidsoup

July 8, 2010, July 08, 2010 09:01, permalink

No rating. Login to rate!

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!

D41d8cd98f00b204e9800998ecf8427e

Sean Catchpole

July 21, 2010, July 21, 2010 19:38, permalink

No rating. Login to rate!

I know this is a little hacky, but I thought it was an interesting solution.

function dataStringToArray(str) {
  return JSON.parse( '[[' + str.replace( /\|/g, '],[' ) + ']]' );
}

Your refactoring





Format Copy from initial code

or Cancel