真ん中のアウトワードから配列を調べる必要があります。
var array = [a,b,c,d,e];
次の順序で印刷する必要があります:c、d、b、e、a
私はすでにアレイを半分に分割しました。最初に前進し、次に後退します。これはすでに改善されていますが、実際には、各サイドのアレイの最後まで、各サイドに1つずつ移動する必要があります。
真ん中から始めたいとしましょう。ループステートメント、条件の前に次のものがありますが、各側で段階的に切り替える3番目の部分を理解できないようです。
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());