Разбор CSV-данных в Javascript - PullRequest
0 голосов
/ 18 июня 2010

У меня есть такая строка:

138374:order1,738437:order2,927438:order3

Я делаю цикл для разделения заказов по запятой (,)

Как разделитьдалее через двоеточие (:), чтобы получить номер заказа и название заказа.

Ниже приведен код:

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]);
  }  
}   

Сейчас он дает мне orderNumber 0.

Ответы [ 5 ]

0 голосов
/ 18 июня 2010

Помните о var подъем .Javascript не имеет переменных области блока, только переменные области действия;в вашем коде nameorderIDs определено чуть ниже completeOrderRequest.

0 голосов
/ 18 июня 2010

что такое 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]);    
}
0 голосов
/ 18 июня 2010

Вот функция, которая больше похожа на то, что вы ищете:

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]);
  } 
}   
0 голосов
/ 18 июня 2010

Откуда берется orderRequest в orderRequest.split (',')?это должно быть вместо:

для (var j = 0; j

Если это так, это означает, что вы делаете разделение дважды, который не будет работать, потому что вы разделяете на одного и того же персонажа.

0 голосов
/ 18 июня 2010
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] );
   }
}

демо: http://jsfiddle.net/MDNmF/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...