2017-02-27 5 views
1

私はEloquent JSを使っていて、 "配列の逆転"問題を理解できませんでした。配列を反転する - 解を理解する

arr.reverseを使用できないなどの疑問があるパラメータがあります。とにかく、同じアレイを元の位置に戻すという解決策は、私を守りませんでした。私はそれを分解するために誰かを探しています。

function reverseArrayInPlace(arr) { 
    var length = (Math.floor(arr.length))/2; 

    for (var i = 0; i < length; i++) { 
    var old = arr[i]; 
    arr[i] = arr[arr.length - 1 - i]; 
    arr[arr.length - 1 - i] = old; 
} 
    return arr; 
} 

私はこのように感じるの内訳次のようになります。

function reverseArrayInPlace(arr) { 
    var length = (Math.floor(arr.length))/2; 

    for (var i = 0; i < length; i++) { 
    var old = arr[i];     // var old now equals 1 
    arr[i] = arr[arr.length - 1 - i]; // 5 - 1 - 0 = 4. Arr[i] = 4 
    arr[arr.length - 1 - i] = old; // 4th position of arr = 1 
            // new arr is 4,2,3,1,5 ? 
} 
    return arr; 
} 


var arrayValue = [1, 2, 3, 4, 5]; 
reverseArrayInPlace(arrayValue); 
console.log(arrayValue); 

ソリューションは動作しますので、明らかに私のロジックがオフになっています。どこが間違っていますか?

+1

アレイインデックスはゼロから始まるので、 'arr [4]'は '4'ではなく' 5'です。 – Pointy

+1

ああ私はばかだ。 .lengthが5で1を引いたので、私は捨ててしまいました。それは今でも完璧な意味があります。ありがとう –

答えて

0

とんがりはコメントで指摘したように:

配列のインデックスは0から始まり、そのarr[4]5、ない4です。

関連する問題