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

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

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

  • массив1 = ( " 4 " , " 7 " , " 12 " )
  • массив2 = ( " черный" , " красный" , "синий" )
  • array3 = ( " кошка " , " собака " , " рыба " )

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

1
Kirt 23 Июл 2010 в 19:09

4 ответа

Лучший ответ

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

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

Примере

4
Andy E 23 Июл 2010 в 15:20

Вы хотите использовать метод 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...
1
Guillaume Lebourgeois 23 Июл 2010 в 15:15
   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
Ahmed Aman 23 Июл 2010 в 15:21

Как это?:

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

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

0
Felix Kling 23 Июл 2010 в 15:17