0

以下のコードを書くと、期待どおりにすべてが出力で逆になります。

var sequence = "kick snare hat openHat";
var sequenceBackwards = sequence.split('').reverse().join('');
document.write(sequenceBackwards);

ただし、配列がある場合は、それを文字列に変換してから、同じ手順を実行しても機能しません。

var sequence = ["kick","snare", "hat","openHat"];
sequence.toString();
var sequenceBackwards = sequence.split('').reverse().join('');
document.write(sequenceBackwards);

これが機能しない理由と、機能する代替例を正確に知りたいと思います。

sequenceBackwardsに対して「typeof」を実行すると、文字列が返されません。想定される「変換」後も配列であることを示すオブジェクトが返されます。私はこれについて少し混乱しています。

私は興味があり、1時間それを選んでいるプロジェクトのためにこれをしていません。

4

4 に答える 4

2

この行はsequence変数を変更せず、returns文字列だけを変更します。

sequence.toString();

["kick", "snare", "hat", "openHat"].toString()を提供します"kick,snare,hat,openHat"。だからそれはあなたが探しているものではありません。

使用する

var sequence = ["kick", "snare", "hat", "openHat"];
var sequenceBackwards = sequence.join(' ').split('').reverse().join('');
document.write(sequenceBackwards);
于 2012-09-03T04:30:52.103 に答える
0

配列には.reverseメソッドがあります。

var sequence = ["kick","snare", "hat","openHat"];
sequence.reverse();
于 2012-09-03T04:29:47.037 に答える
0

異なる動作が発生する理由は、toString呼び出しが各要素をスペースではなくコンマで結合しているためです。このコード:

var sequence = ["kick","snare", "hat","openHat"];
sequence.toString();

次を返します。

キック、スネア、ハット、openHat

代わりにこれを使用できます:

sequence.join(' ');
于 2012-09-03T04:29:49.310 に答える
0

これはsequence変数には何もしません:

var sequence = ["kick","snare", "hat","openHat"];
sequence.toString();

再割り当てする必要があります:

sequence = sequence.toString();

ただし、Array.toStringコンマ区切りの値を返しますが、sequence.join(' ')値をスペースで連結するために使用できます。

于 2012-09-03T04:35:43.813 に答える