Добавление пространства в массив в JavaScript

Я пытаюсь сделать игру палача. Поэтому у меня есть функция, которая берет слово и создает новый массив черт подчеркивания. Я отлично работаю, но теперь я пытаюсь добавить функциональность интервала, чтобы умножить слова. Но теперь вместо этого добавляются случайные пробелы.

Любая помощь?

function dash(word) {

        var dash = [];

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

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

        }

        return dash;

}

javascript,arrays,

1

Ответов: 5


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;

}

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

Вы перемещаете элементы в обратном порядке в цикле .... Я пробовал это и отлично работал ...

    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;
    }

0

Если вы просто хотите, чтобы ваше слово было в массиве, вы могли бы использовать String.prototype.splitэту работу для себя. Затем отобразите массив символов.

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


-1

вы должны использовать значение ASCII пространства вместо слова [i] == ""

im не уверен в значении ASCII пространства в javascript. но не беспокойтесь, вы можете использовать charCodeAt ();

word[i] == charCodeAt(" ")

JavaScript, массивы,
Похожие вопросы
Яндекс.Метрика