2016-11-11 9 views
1

私はconsole.log(a)の結果に少し戸惑います。配列 "a"の要素の順序が逆になっているのはなぜですか?私は配列のロジックが "逆"であることを理解していますが、配列 "a"に何が起こったのかを頭で覆すことはできません。Array.prototype.reverse()で配列の要素を反転する

Mozillaデベロッパーネットワークで見つかる例(here)。あなたは元の配列を変異させたくない場合は

var a = ['one', 'two', 'three']; 
a.reverse(); 
console.log(a);  // ['three', 'two', 'one'] 

あなたが反転する前に浅いコピーを作ることができます:インプレースの配列が逆になります

var a = ['one', 'two', 'three']; 
var reversed = a.reverse(); 

console.log(a);  // ['three', 'two', 'one'] 
console.log(reversed); // ['three', 'two', 'one'] 
+0

それは場所に変異があり、返された、私は疑う。 –

+0

私はこの問題をすぐに利用できるドキュメントに明確に記述しているので、この質問を議論の対象外としています。 –

+2

@ torazaburo私は自分ですぐに入手できるドキュメントを読んでいたので、この質問を提起しました。あなたによれば、「明確に記述されている」ものは理解できませんでした。私は初心者であり、時には初心者は「明白に記述された」と思われるかもしれないことについて質問を提起する。私たちがあなたのロジックに従っているならば、スタックオーバーフローに関するすべての質問は、話題がすぐに入手できる文書に明確に記述されるべきであるため、話題として閉じられるべきです。私の学びの中で初心者(私)が前進するのに大いに助けました。 – carllecat

答えて

5

ご注意description上:

slice機能付) 0

逆方法は、配列を変異、及び配列への参照を返す場所、に呼び出す配列オブジェクト の要素を転置します。

の位置がこれに該当します。

+0

@downvoterあなたは何が間違っているのか教えていただけますか?前もって感謝します。 – Christos

+0

ユーザーのtorazaburoさんからのコメントを質問の下に読みます。 – carllecat

+1

私はダウン投票した人ではない、私は質問を掲示し、助けが必要な人だ。 – carllecat

4

reverse関数は(それは/元の配列オブジェクトを変異させる修正します)

var reversed = a.slice().reverse(); 
console.log(a);  // ['one', 'two', 'three'] 
console.log(reversed); // ['three', 'two', 'one'] 
関連する問題