从中间处理数组

Leo*_*oni 4 javascript arrays

我需要从中间词语中查看数组.

var array = [a,b,c,d,e];
Run Code Online (Sandbox Code Playgroud)

我需要按以下顺序打印:c,d,b,e,a

我已经将数组分成两半,先是向前然后向后移动,这已经是一个改进了,但我真的需要在每一侧都进行一次,直到每一侧的阵列结束.

说我想从中间开始.我在循环语句之前有以下条件,条件,我似乎无法弄清楚第三部分逐渐切换每一侧的一个.

for (var i = Math.floor(array.length/2); i >= 0 || i < array.length; i?){
//Do Something here.
}
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?显然我似乎无法在这种情况下测试这一点.

谢谢

我修改了下面的答案(非常感谢)来提出这个功能.它允许从阵列中的任何位置开始并选择要去的方向.我相信它可以写得更优雅.错误的索引号也有安全性.

var array = ["a", "b", "c", "d", "e"];

function processArrayMiddleOut(array, startIndex, direction){
    if (startIndex < 0){ 
        startIndex = 0;
    }
    else if ( startIndex > array.length){
        startIndex = array.lenght-1;
    };

    var newArray = [];

    var i = startIndex;

    if (direction === 'right'){
        var j = i +1;
        while (j < array.length || i >= 0 ){
            if (i >= 0) newArray.push(array[i]);
            if (j < array.length) newArray.push(array[j]);
            i--;
            j++;                
        };
    }
    else if(direction === 'left'){
        var j = i - 1;
        while (j >= 0 || i < array.length ){
            if (i < array.length) newArray.push(array[i]);
            if (j >= 0) newArray.push(array[j]);
            i++;
            j--;                
        };
    };

    return newArray;            
}    

var result = processArrayMiddleOut(array, 2, 'left');

alert(result.toString());
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/amigoni/cqCuZ/

st3*_*inn 9

两个柜台,一个上升,另一个下降:

var array = ["a", "b", "c", "d", "e"];
var newArray = [];

var i = Math.ceil(array.length/2);
var j = i - 1;

while (j >= 0)
{
    newArray.push(array[j--]);
    if (i < array.length) newArray.push(array[i++]);
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/X9cQL/