Как добавить символ после каждого слова в JavaScript - PullRequest
0 голосов
/ 08 октября 2019

Таким образом, мой код в настоящее время только ставит -boink или -bork после всей строки после выполнения условий, но я хочу, чтобы после каждого отдельного слова условия добавлялись в зависимости от того, удовлетворяет ли оно условиям того, что оно большеили менее пяти символов. Например, "My-boink name-boinkk is-boink Emmanuel-bork"

function myFunctionOne(input1, input2) {

var prompt1 = prompt("Please enter 1, 2, 3, or Exit").toLowerCase();
var prompt2 = input2;

if (prompt1 == 1) {
prompt2 = prompt("Please enter a string");

while (prompt2.length === 0) {
  prompt2 = prompt("You need to enter something");
}

myFunctionOne(prompt1, prompt2);
}

if (prompt1 == 2) {
  if (prompt2.length > 5) {
      console.log(prompt2 + "-bork");
  }
  myFunctionOne(prompt2);
}
else {
  console.log(prompt2 + "-boink")
}

}
 myFunctionOne(1, 2, null);

Ответы [ 2 ]

2 голосов
/ 08 октября 2019

Вам нужно разделить строку на слова с помощью метода split, а затем перебрать их, используя цикл for, чтобы проверить, длиннее ли они 5 символов, добавить «bork» или «boink», а затем снова объединить слова.

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

Редактировать Я напишу код настолько близкий, насколько у вас уже есть, насколько это возможно

function myFunctionOne(input1, input2) {

    var prompt1 = prompt("Please enter 1, 2, 3, or Exit").toLowerCase();
    var prompt2 = input2;

    if (prompt1 == 1) {
        prompt2 = prompt("Please enter a string");

        while (prompt2.length === 0) {
            prompt2 = prompt("You need to enter something");
        }

        myFunctionOne(prompt1, prompt2);
    }

    if (prompt1 == 2) {
        var words = prompt2.split(" "); // we separate the string into words dividing them by space into an array called words
        for(var i = 0; i < words.length; i++){ // we loop from 0 to the length of the array - 1 to access all positions in the array (the last position in arrays are always the length of the array - 1 because they start at 0)  
            if(words[i].length > 5){ //we check if the word in this position of the array is longer than 5 characters
                words[i] += "-bork"; //if it is we add -bork
            }else{
                words[i] += "-boink" //if it is not longer than 5 characters we add -boink
            }
        }
        console.log(words.join(" ")); //we print the array joining the elements with an space to form a string
    }

}
myFunctionOne(1, 2, null);
0 голосов
/ 09 октября 2019

Меня немного смущает то, что происходит в верхней части вашего кода, поэтому я не собираюсь реорганизовывать все это. Я собираюсь дать объяснение того времени, когда у нас есть наша строка.

Один из подходов заключается в использовании .split (), который будет возвращать массив строковых значений в зависимости от того, какой символ вы выбрали для разделениястрокаПричина, по которой мы должны это сделать, заключается в том, что ваш код в настоящее время проходит по каждой строке, а не по каждому слову в строке. В этом случае я предполагаю, что ваша строка не может использовать знаки препинания, такие как запятые или точки. Если это так, вы хотите разделить на пустые места, чтобы это выглядело как string.split ("").

Затем вы можете использовать метод массива map () для циклического прохождения каждого значения в массиве и выполнения над ним функции. Обратите внимание, что метод map () вернет новый массив, поэтому лучше сохранить его в новой переменной.

Затем вы можете использовать метод .join (), который объединит значения массива на основе некоторого значения (по существу, противоположного .split ()). Опять же, при условии отсутствия пунктуации, я бы объединил массив с пробелом, чтобы значения имели пробел между ними, который будет выглядеть как array.join (""). ниже.

const string = prompt("Please enter your string");

const stringToArray = string.split(" ");
console.log(stringToArray);

const filteredArray = stringToArray.map((string) => {
  if (string.length > 5) {
    return string + "-bork";
  }

  return string + "-boink";
});
console.log(filteredArray);

const joinedFilteredArray = filteredArray.join(" ");
console.log(joinedFilteredArray);
...