преобразовать строку в двумерный массив в JavaScript - PullRequest
6 голосов
/ 02 марта 2011

Я пытаюсь преобразовать строку типа "10|15|1,hi,0,-1,bye,2", где первые два элемента 10|15 означают что-то отличное от 1,hi,0,-1,bye,2. Я хотел бы отделить их друг от друга. Наивный способ достигнуть этого был бы:

value = string.split("|");
var first = value[0];
var second = value[1];
var tobearray = value[2];
array = tobearray.split(",");

(Конечно, если вы знаете способ сделать это лучше, я был бы рад узнать). Тем не менее, array является массивом, который содержит array[0]=1, array[1]=hi, array[2]=0, array[3]=-1 и т. Д. Однако я хочу получить двумерный массив, такой как

array[0][0]=1, array[0][1]=hi, array[0][2]=0
array[1][0]=-1, array[1][1]=bye, array[1][2]=2

Есть ли способ сделать это?

Спасибо

Ответы [ 3 ]

16 голосов
/ 02 марта 2011

Первые два элемента (10|15) могут быть извлечены заранее.После этого у вас останется:

var a = "1,hi,0,-1,bye,2";

Давайте сращиваем , пока у нас ничего не останется:

var result = [];

a = a.split(','); 

while(a[0]) {
    result.push(a.splice(0,3));
}

result; // => [["1","hi","0"],["-1","bye","2"]]
3 голосов
/ 06 июля 2012
function getMatrix(input_string) 
{
    var parts = input_string.split('^');
    for (var t=0; t<parts.length; t++)
    {
        var subparts = parts[t].split('*');

        parts[t] = subparts.splice(0,subparts.length);              
    }

    return parts;
}
2 голосов
/ 02 марта 2011
function getMatrix(input_string) {
    var parts = input_string.split('|');
    var subparts = parts.pop().split(',');
    var partlen = subparts.length / parts.length;
    for (var i=0; i<parts.length; i++) {
        parts[i] = subparts.splice(0,partlen);
    }
    return parts;
}
...