javascript 在javascript中将字符串转换为二维数组

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/5163709/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-25 16:12:22  来源:igfitidea点击:

convert a string into a two-dimensional array in javascript

javascriptarraysstringmultidimensional-array

提问by Robert Smith

I'm trying to convert a string like this "10|15|1,hi,0,-1,bye,2"where the first two elements 10|15mean something different than 1,hi,0,-1,bye,2. I would like to separate them from each other. A naive way to accomplish that would be:

我正在尝试转换这样的字符串"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(",");

(Of course, if you know a way to do this in a better way, I'd be glad to know). However, arrayis an array which contains array[0]=1, array[1]=hi, array[2]=0, array[3]=-1, etc. However, I want to obtain a two dimensional array such as

(当然,如果你知道一种更好的方法,我很高兴知道)。但是,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

Is there any way to do that?

有没有办法做到这一点?

Thanks

谢谢

回答by James

The first two elements (10|15) can be extracted beforehand. After that you're left with:

10|15可以预先提取前两个元素 ( )。之后你剩下:

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

Let's spliceuntil we're left with nothing:

让我们拼接直到我们一无所有:

var result = [];

a = a.split(','); 

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

result; // => [["1","hi","0"],["-1","bye","2"]]

回答by Abdel1 O.

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

回答by kojiro

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