组阵分组

时间:2012-05-11 20:07:45

标签: javascript jquery arrays

此代码http://jsfiddle.net/minagabriel/5MQ77/

     var flowShadeBigArray =[] ;
          var x = [7, 411, 780]
          var y = [286, 712, 1058]

        for( var i = 0 ; i< x.length;i++){

            for(var index = x[i]; index <= y[i] ; index++ ){

                 var temp = [] ; 

                temp.push(index) ; 
                flowShadeBigArray.push(temp); 


            }

        }
        console.log(JSON.stringify(flowShadeBigArray));

生成以下数组

 [[7],[8],[9],[10],[11],[12],[13],[14]................[1056],[1057],[1058]]

我想在flowShadeBigArray中创建一个三个数组并拥有[x[i] ... y[i] ] 组合在一起:

例如

[  [  [7]....[286] ] , [ [411]...[712] ] ,[ [780]...[1058] ] ]

注意我仍然需要将这些数字中的每一个保留为数组,以便我可以将其用作其他内容的索引

谢谢

2 个答案:

答案 0 :(得分:1)

只需将temp初始化移动到第一个循环,然后移动到第二个循环,将.push()移动到第二个循环之后(或之前,无关紧要)。

var flowShadeBigArray = [];
var x = [7, 411, 780]
var y = [286, 712, 1058]

for (var i = 0; i < x.length; i++) {
    var temp = [];

    for (var index = x[i]; index <= y[i]; index++) {
        temp.push(index);
    }
    flowShadeBigArray.push(temp);
}

http://jsfiddle.net/5MQ77/1/

如果每个单独的数字都属于自己的数组,那么请更改:

flowShadeBigArray.push(temp);

到此:

flowShadeBigArray.push([temp]);

答案 1 :(得分:0)

-edited

function range(from, to) {
    var arr = [];
    while (from <= to) {
         arr.push([i++]);
    }
    return arr;
}
var result = [];
for (var i=0; i<x.length; i++) {
    result.push(range(x[i], y[i]));
}