在JavaScript中添加数组中的空间

时间:2016-10-15 14:08:35

标签: javascript arrays

我正在尝试制作一个刽子手游戏。所以我有一个函数接受单词并创建一个新的下划线破折号数组。我有完美的工作,但现在我正在尝试添加具有间距的功能,以便繁多的单词。但现在它增加了随机空格。

任何帮助?

function dash(word) {

	var dash = [];

	for (var i = word.length - 1; i >= 0; i--) {

		if (word[i] == " ") {
			dash.push(" ");
		} else {
			dash.push("_");	
		}

	}

	return dash;

}

5 个答案:

答案 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("&nbsp;");
        } 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("&nbsp;");
        } 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("&nbsp;");
            } else {
                dash.push("_"); 
            }
        }

      return dash;
    }

答案 3 :(得分:0)

如果您只想在阵列中使用单词,可以使用String.prototype.split为您完成工作。然后映射字符数组。

var word = 'javascript is awesome'
console.log( 
  word.split('').map(letter => letter === ' ' ? '&nbsp;' : '_')
)

答案 4 :(得分:-1)

你应该使用空格的ASCII值而不是单词[i] ==“”

我不确定javascript中空间的ASCII值。但不要担心你可以使用charCodeAt();

word[i] == charCodeAt(" ")