0

I have a string like this:

138374:order1,738437:order2,927438:order3

I am doing a loop to split orders by comma (,)

How do I split it further by colon(:) to yield the order number and order name.

Below is the code:

function(getOrders) {
  var completeOrderRequest = getOrders.split(',');
  for(var j=0; j < orderRequest.split(',').length; j++) {
    alert(completeOrderRequest[j]);
    var nameOrderIds = completeOrderRequest[j].split(':');

    alert("OrderNumber: "+nameOrderIds[0]);
    alert("Name : "+nameOrderIds[1]);
  }  
}   

Right now its giving me orderNumber 0.

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
Asim Zaidi
  • 27,016
  • 49
  • 132
  • 221
  • related: [How can I parse a CSV string with Javascript?](http://stackoverflow.com/questions/8493195/how-can-i-parse-a-csv-string-with-javascript), [Javascript code to parse CSV data](http://stackoverflow.com/questions/1293147/javascript-code-to-parse-csv-data) – Bergi Feb 21 '13 at 19:38

5 Answers5

0
function getOrders( orderString) {
   var orders = orderString.split(','); // create array of ordernumber:name combos
   for( var i=0; i < orders.length; i++) { // use length of above array, not a split again
      var entry = orders[i].split(':'); // now break each combo into it's own array
      alert( "OrderNumber: " + entry[0] );
      alert( "Name: " + entry[1] );
   }
}

demo: http://jsfiddle.net/MDNmF/

Dan Heberden
  • 10,990
  • 3
  • 33
  • 29
0

Here is a function that should be more like what you're looking for:

function(getOrders) {
  var completeOrderRequest = getOrders.split(',');
  for(var j=0; j < completeOrderRequest.length; j++) {
    var idsAndNames = completeOrderRequest[j].split(':');
    alert("OrderNumber: "+idsAndNames[0]);
    alert("Name : "+idsAndNames[1]);
  } 
}   
rfunduk
  • 30,053
  • 5
  • 59
  • 54
0

Where is the orderRequest in the orderRequest.split(',') coming from?? should this be instead:

for (var j = 0; j < completeOrderRequest.split(',').length; j++)

If so, that means you are doing a split twice, which would not work because you are splitting on the same character.

Ken Richards
  • 2,937
  • 2
  • 20
  • 22
0

what is orderRequest?

var getOrders = "138374:order1,738437:order2,927438:order3,";

var completeOrderRequest = getOrders.split(",");

for(i = 0; i < completOrderRequest.length; i++){
   var nameOrderIds = completeOrderRequest[j].split(':');
   alert("OrderNumber: "+nameOrderIds[0]);  
   alert("Name : "+nameOrderIds[1]);    
}
KevinDTimm
  • 14,226
  • 3
  • 42
  • 60
0

Be aware of var hoisting. Javascript doesn't have block-scope variables, only function-scope ones; in your code, nameorderIDs is actually defined just below completeOrderRequest.

Community
  • 1
  • 1
Dan Davies Brackett
  • 9,811
  • 2
  • 32
  • 54