我正在尝试制作一个刽子手游戏。所以我有一个函数接受单词并创建一个新的下划线破折号数组。我有完美的工作,但现在我正在尝试添加具有间距的功能,以便繁多的单词。但现在它增加了随机空格。
任何帮助?
function dash(word) {
var dash = [];
for (var i = word.length - 1; i >= 0; i--) {
if (word[i] == " ") {
dash.push(" ");
} else {
dash.push("_");
}
}
return dash;
}
答案 0 :(得分:2)
这个空间不是随机的 - 它们是倒置的。
这是因为你从后到前运行你的话:
而不是for (var i = word.length - 1; i >= 0; i--)
尝试:
function dash(word) {
var dash = [];
for (var i = 0; i < word.length; i++) {
if (word[i] == " ") {
dash.push(" ");
} else {
dash.push("_");
}
}
return dash;
}
答案 1 :(得分:2)
并不是因为它正在向后移动字符串,所以它只是向后移动。你从最后开始,一路走到前面。它适用于由单个单词组成的字符串,因为你总是只有那么多的空格。
只需更改
for (var i = word.length - 1; i >= 0; i--)
到
for (var i = 0; i < word.length; i++)
这是在您的控制台中运行以进行测试的内容:
function dash(word) {
var dash = [];
for (var i = 0; i < word.length; i++) {
if (word[i] == " ") {
dash.push(" ");
} else {
dash.push("_");
}
}
return dash;
}
var dashedSingle = dash('Testing');
var dashedMultiple = dash('Testing this sentence now');
console.log(dashedSingle)
console.log(dashedMultiple)
答案 2 :(得分:2)
你在for循环中以相反的顺序遍历元素....我试过这个并且工作得很好......
function dash(word) {
var dash = [];
for (var i = 0; i <=word.length - 1; i++) {
if (word[i] == " ") {
dash.push(" ");
} else {
dash.push("_");
}
}
return dash;
}
答案 3 :(得分:0)
如果您只想在阵列中使用单词,可以使用String.prototype.split
为您完成工作。然后映射字符数组。
var word = 'javascript is awesome'
console.log(
word.split('').map(letter => letter === ' ' ? ' ' : '_')
)
答案 4 :(得分:-1)
你应该使用空格的ASCII值而不是单词[i] ==“”
我不确定javascript中空间的ASCII值。但不要担心你可以使用charCodeAt();
word[i] == charCodeAt(" ")