【问题标题】:convert a string into a two-dimensional array in javascript在javascript中将字符串转换为二维数组
【发布时间】:2011-07-07 00:42:04
【问题描述】:

我正在尝试转换像 "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

有什么办法吗?

谢谢

【问题讨论】:

  • 为什么要一个多维数组而不是类似稀疏数组的对象 {10: [1,'hi',0], 15: [-1,'bye',2] ,}?
  • @kojiro:嗯,我使用的是 google-dif-match-patch,它会生成数组(array()),因此,为了保持一致性,我选择使用多维数组。跨度>
  • @Robert 啊,我明白了。只是好奇!
  • @kojiro:没关系。我应该担心性能吗?
  • 如果您的阵列真的这么小,那就不行了! ;) 说真的,我希望对象效率低于数组,但根据使用情况,可能更容易使用。

标签: javascript arrays string multidimensional-array


【解决方案1】:

可以预先提取前两个元素 (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"]]

【讨论】:

    【解决方案2】:
    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;
    }
    

    【讨论】:

    • 哦,非常好!不幸的是,J-P 早些时候发布了一个非常好的解决方案。 +1,不过。谢谢:-)
    【解决方案3】:
    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;
    }
    

    【讨论】:

      猜你喜欢
      • 2013-07-10
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      相关资源
      最近更新 更多