2013-02-07 51 views
1

我在使用javascript将数组拆分为多个数组时遇到了一些问题。举例来说,我有这样的数组:Javascript拆分为多个数组的阵列

[0] => object 
    [0] => object 
     [0] => The Letter P 
     [1] => 5.5 
    [1] => object 
     [0] => 5 
     [1] => 1.1 
     [2] => 5 
     [3] => 1 
     [4] => 1 
    [2] => object 
     [0] => 5 
     [1] => 1.1.1 
     [2] => 1.1.1 
     [3] => 1.1.1 
     [4] => 3 

我想要做的是分裂的时期,创造这样一个更深的数组:

[0] => object 
    [0] => object 
     [0] => The Letter P 
     [1] => object 
      [0] => 5 
      [1] => 5 
    [1] => object 
     [0] => 5 
     [1] => object 
      [0] => 1 
      [1] => 1 
     [2] => 5 
     [3] => 1 
     [4] => 1 
    [2] => object 
     [0] => 5 
     [1] => object 
      [0] => 1 
      [1] => 1 
      [2] => 1 
     [2] => object 
      [0] => 1 
      [1] => 1 
      [2] => 1 
     [3] => object 
      [0] => 1 
      [1] => 1 
      [2] => 1 
     [4] => 3 

我已经尝试了关于一切我能想到的和我似乎无法找到工作的代码:(请帮我:(

+0

数字是字符串还是数字?为_String_测试'if(~~ x!== x)'为_Number_和'x.indexOf('。')'。 –

+0

您发布的代码不是(有效)javascript。我不知道所有的编程语言,但我认为它不是任何语言的有效语法。由于你的问题是关于JavaScript的:你能显示JavaScript代码来澄清你的问题吗? – Flauwekeul

+0

@PaulS .:是否应该做32位整数转换?只要测试'typeof x' – Bergi

回答

0

感谢您的所有答复,但我设法弄清楚了我自己。当你从编程休息一下,让你的头脑放松时,会发生什么。不管怎么说,知道我有三个层面,以我的数组中开始,我能写出下面的代码:

for(a = 0; a < array.length; a++){ 
    for(var b = 0; b < array[a].length; b++){ 
    for(var c = 0; c < array[a][b].length; c++){ 
     if(array[a][b][c].indexOf(".") > 0){ 
     array[a][b][c] = array[a][b][c].split("."); 
     } 
    } 
    } 
} 

起初,我试着用while循环,但需要更多的代码,却多了很多混乱。然后我开始使用for循环,这对于这种类型的系统来说效果更好。再次感谢您的回复,我希望这可以帮助任何尝试做同样事情的人。

0

这不是一个完整的解决方案,但我用这个功能来完成类似的东西你描述。

function parseStringToArray(inputString){ 
    var parts = inputString.split("."); 
    var arr = []; 
    while (parts.length){ 
     arr.push(parts.shift()); 
    } 
    return arr; 
} 
function parseArray(inputArray){ 
    var arrayLength = inputArray.length; 
    for (var i = 0; i < arrayLength; i++){ 
     if (inputArray[i].indexOf('.'){ 
      inputArray[i] = parseStringToArray(inputArray[i]); 
     } 
    } 
} 
2

这应该工作

function dotsToArr(arr) { 
    for(var x = 0; x < arr.length; x++) { 
     if(typeof(arr[x]) != "object") { 
      var parts = (arr[x]+"").split("."); 
      if(parts.length > 1) { 
       arr[x] = parts; 
      } 

      continue; 
     } 

     dotsToArr(arr[x]); 
    } 
} 

JS小提琴这里:http://jsfiddle.net/gER22/

0

请问这帮助?

var toString = Object.prototype.toString; 

function parseArray(obj) { 
    var i, l; 

    if (toString.call(obj) === "[object Number]") { 
     obj += ""; 
    } 

    if (toString.call(obj) === "[object String]" && obj.indexOf(".") !== -1) { 
     obj = obj.split("."); 
    } 

    if (toString.call(obj) === "[object Array]") { 
     for (i = 0, l = obj.length; i < l; i++) { 
      obj[i] = parseArray(obj[i]); 
     } 
    } 

    return obj; 
}