我需要从中间的外语中遍历一个数组。
var array = [a,b,c,d,e];
我需要按以下顺序打印:c,d,b,e,a
我已经将阵列分成两半,先前进后退,这已经是一种改进,但我真的需要在每一侧各一个,直到每一侧阵列的末尾。
说我想从中间开始。我在循环语句之前有以下内容,条件,我似乎无法弄清楚第三部分以增量方式在每一侧切换一个。
for (var i = Math.floor(array.length/2); i >= 0 || i < array.length; i?){
//Do Something here.
}
有谁知道如何做到这一点?显然,我似乎无法在这种情况下进行测试。
谢谢
我修改了下面的答案(非常感谢)来提出这个功能。它允许从阵列中的任何位置开始并选择前进的方向。我相信它可以写得更优雅。错误的索引号也有安全性。
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());