当我编写下面的代码时,所有内容都按预期反转。
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”时,它不会返回string.It会返回一个对象,告诉我它仍然是假定的“转换”之后的数组。我对此感到有点困惑。
我没有为一个我很好奇的项目做这个,并且已经在这个项目中挑选了一个小时。
答案 0 :(得分: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);
答案 1 :(得分:0)
数组有.reverse
方法。
var sequence = ["kick","snare", "hat","openHat"];
sequence.reverse();
答案 2 :(得分:0)
您遇到不同行为的原因是toString
调用通过逗号而不是空格将每个元素连接在一起。这段代码:
var sequence = ["kick","snare", "hat","openHat"];
sequence.toString();
返回以下内容:
踢,小鼓,帽子,openHat
您可以改用:
sequence.join(' ');
答案 3 :(得分:0)
这对sequence
变量没有任何作用:
var sequence = ["kick","snare", "hat","openHat"];
sequence.toString();
你需要重新分配它:
sequence = sequence.toString();
但Array.toString
会返回以逗号分隔的值,但您可以使用sequence.join(' ')
将值与空格连接。