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”时,它不会返回字符串。它返回的对象告诉我在假定的“转换”之后它仍然是一个数组。我对此有点困惑。

我不是为了一个我很好奇并且已经研究了一个小时的项目而这样做的。

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

sequence这对变量没有任何作用:

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

您需要重新分配它:

sequence = sequence.toString();

Array.toString返回逗号分隔的值,但您可以使用sequence.join(' ')空格连接值。

于 2012-09-03T04:35:43.813 回答
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 回答