Я разрешил str= «продвинутый разработчик интерфейса» в виде строки, мне нужен вывод типа «продвижение интерфейса разработчика» в обратном порядке

#javascript #string

#javascript #строка

Вопрос:

 let str = "advanced frontend developer";

function reverseString(str) {
let data = str.split(' ');
let array = [];
data.forEach((element,index)=>{
    array.push(data[(data.length-1)-index])
});
console.log(...array)  
}

console.log(reverseString(str)); 

У меня есть следующее выше, чтобы изменить строку, есть ли лучший способ, чем этот? пожалуйста, дайте мне знать.

Извините, я забыл упомянуть одну вещь при использовании функции reverse()

Комментарии:

1. один из способов — просто выполнить итерацию по строке в обратном порядке, используя for цикл и только console.log каждый символ.

2. да, для этого я использую forEach.

Ответ №1:

Просто reverse результат split и воссоединение:

 console.log("advanced frontend developer".split(" ").reverse().join(" "));

// want to use a loop?
const str = "advanced frontend developer".split(" ");
let i = str.length, result = [];
while (i--) {
  result.push(str[i]);
}
console.log(result.join(" ")); 

Используя функцию, вы должны вернуть результат:

 const initialStr = "advanced frontend developer";
console.log(reverseStr(initialStr));

function reverseStr(str) { 
  return str.split(" ").reverse().join(" "); 
}

// or as arrow function
let reverseStrArrow = str => str.split(" ").reverse().join(" ");
console.log(reverseStrArrow(initialStr)); 

Вы можете сделать это настолько сложным, насколько захотите. Здесь два дополнительных решения цикла

 const str = "advanced frontend developer";
console.log(anotherReversalLoop(str));
console.log(anotherReversalLoop2(str));

// use array to store intermediate results
function anotherReversalLoop(str) {
  let result = [];
  let strTmp = "";
  for (let i = 0; i < str.length; i  = 1) {
    if (str[i] === " ") {
      result.unshift(strTmp);
      strTmp = "";
    } else {
      strTmp  = str[i];
    }
  }
  
  if (strTmp.length) {
    result.unshift(strTmp);
  }
  
  return result.join(" ");
}

// use string to store intermediate results
function anotherReversalLoop2(str) {
  let strResult = "";
  let strTmp = "";
  for (let i = 0; i < str.length; i  = 1) {
    if (str[i] === " ") {
      strResult = `${strTmp} ${strResult}`;
      strTmp = "";
    } else {
      strTmp  = str[i];
    }
  }
  
  if (strTmp.length) {
    strResult = `${strTmp} ${strResult}`;
  }
  
  return strResu<
} 

Комментарии:

1. ups, вывод выполняется повторно в течение дня, сначала я увидел разделение, revesrse join с разделением мысли в пространстве …, так что легко вернуть мой голос обратно 🙂

2. без использования функций reverse() и join() мы должны это реализовать. теперь я обновил вопрос.

3. @ArunkumarSubramani Первый фрагмент в ответе содержит циклическое решение ( while )

Ответ №2:

Использование цепочки методов javascript делает это намного проще. Проверьте приведенный ниже код.

 let str = "advanced frontend developer";
const reverseStr = str.split(' ').reverse().join(' ');
console.log(reverseStr); // developer frontend advanced 
 

Комментарии:

1.без использования функций reverse() и join() мы должны это реализовать. теперь я обновил вопрос.