Как разделить сложную строку на 3 отдельных массива? - PullRequest
1 голос
/ 23 июля 2010

Вот где я нахожусь:
Я начал с массива ... очистил его с помощью 'regex'.
Теперь у меня есть это ... у каждого элемента есть три значения

  • mystring = 4 | черная | кошка, 7 | красная | собака, 12 | синяя | рыба

Вот где я хочу быть:
Я хочу получить три массива.

  • array1 = ("4", "7", "12")
  • array2= ("черный", "красный", "синий")
  • array3 = ("кошка", "собака", "рыба")

Я тоже хочу это сделатьне покидая страницу ... желательно используя javascript
Я понимаю теорию, но я запутался в синтаксисе.

Ответы [ 4 ]

4 голосов
/ 23 июля 2010

Я бы использовал известный метод Джона Ресига "поиск и не заменяй" , он идеально подходит для этого:

var arr1 = [], arr2 = [], arr3 = [],
    mystring = "4|black|cat, 7|red|dog, 12|blue|fish";

mystring.replace(/(\d+)\|([^\|]+)\|([^,]+)/g, function ($0, $1, $2, $3) { 
    arr1.push($1);
    arr2.push($2);
    arr3.push($3);
}); 

Пример

1 голос
/ 23 июля 2010

Вы хотите использовать метод split ():

var res = mystring.split(','); //will give you an array of three strings
var subres = res[0].split('|'); //will give you an array with [4, black, cat]

//etc...
0 голосов
/ 23 июля 2010
   var str = '4|black|cat, 7|red|dog, 12|blue|fish';

   var tmp = str.split(',');

   var firstArray = Array();
   var secondArray = Array();
   var thirdArray = Array();

   for( var i in tmp ){
        var splitted = tmp[i].split('|');
        //alert(true);
        firstArray[i]=splitted[0];
        secondArray[i]=splitted[1];
        thirdArray[i]=splitted[2];
   }
0 голосов
/ 23 июля 2010

Как это?:

var values = mystring.split(',');

var arrays = new Array();

for(var i=0; i < values.length; i++) {
    var parts = values[i].split('|');
    for(var j = 0; j < parts.length;j++) {
        if(!arrays[j]) {
            arrays[j] = new Array();
        }
        arrays[j].push(parts[j]);
    }
}

Даст вам массив, содержащий эти три массива.

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