我需要从中间词语中查看数组.
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)
两个柜台,一个上升,另一个下降:
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)
| 归档时间: |
|
| 查看次数: |
3600 次 |
| 最近记录: |