Javascript将数组拆分为多个数组

Javascript将数组拆分为多个数组,javascript,arrays,split,Javascript,Arrays,Split,我在使用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]

我在使用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

我已经尝试了我能想到的一切,但我似乎找不到一个有效的代码:(请帮助我:(

这不是一个完整的解决方案,但我使用这个函数来完成您所描述的事情

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]);
        }
    }
}
函数parseStringToArray(inputString){
var parts=inputString.split(“.”);
var-arr=[];
while(零件长度){
arr.push(parts.shift());
}
返回arr;
}
函数parseArray(inputArray){
var arrayLength=inputArray.length;
对于(变量i=0;i
这应该行得通

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]);
    }
}
函数dotstorar(arr){
对于(变量x=0;x1){
arr[x]=零件;
}
继续;
}
dotstorar(arr[x]);
}
}
JS Fiddle这里:

这有帮助吗

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;
}
var-toString=Object.prototype.toString;
函数数组(obj){
变量i,l;
如果(toString.call(obj)==“[对象编号]”){
obj+=”;
}
if(toString.call(obj)==“[对象字符串]”&&obj.indexOf(“.”)!=-1){
对象=对象拆分(“.”);
}
if(toString.call(obj)=“[object Array]”){
对于(i=0,l=obj.length;i
感谢您的回复,但我自己设法解决了这个问题。当您从编程中休息一下,让您的大脑放松下来时,会发生什么令人惊讶的事情。无论如何,知道我的数组中有三个层要开始,我能够编写以下代码:

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(".");
      }
    }
  }
}
(a=0;a{ 对于(var b=0;b0){ 数组[a][b][c]=数组[a][b][c]。拆分(“.”); } } } }
起初我尝试使用while循环,但这需要更多的代码,而且更加混乱。然后我开始使用for循环,这对于这种类型的系统来说效果更好。再次感谢您的回复,我希望这能帮助其他尝试做同样事情的人。

是数字字符串还是数字?测试
如果(~~x!==x)
表示数字,
x.indexOf('.')
表示字符串。您发布的代码无效javascript。我不知道所有的编程语言,但我认为它在任何语言中都是无效的语法。因为你的问题是关于javascript的:你能展示javascript代码来澄清你的问题吗?@PaulS.:那应该做32位整数转换吗?只需测试
typeof x
@Bergi它测试一个数字是否不等于整数如果这是真的,那么这个数字就有一些非整数部分,这是一种特殊的行为。@PaulS:“啊,这是一个答案。我怀疑这与你关于属性类型的问题有关。”。