Использование циклов for для замены цифр

используя цикл for, мне нужно написать код, чтобы поменять местами 2-ю и 3-ю цифры числа, заданного пользователем в javascript.

for ( i = 0; i < entNum.length; i++) {
    if (i === 0) num2 = entNum[i];
    else if (i === entNum.length - 2) {
        newNum = newNum + num2;
        newNum = entNum[i] + newNum;
    }
    else newNum = newNum + entNum[i];
}
console.info("New number:" + newNum)

это код, который я смог создать, однако этот код меняет местами 1-ю и 2-ю цифры в номере, и я, кажется, не могу изменить код таким образом, чтобы нацеливаться на 2-ю и 3-ю цифры, и при этом я на 100% не понимаю циклы и если утверждения. поэтому подробное объяснение было бы полезно.

у вас есть примеры? что такое entNum?

Nina Scholz 09.04.2024 20:16

Почему вы должны использовать цикл, если вы специально меняете местами вторую и третью цифры?

mykaf 09.04.2024 20:18

например скажем, entNum = 345 @NinaScholz

NewQode10 09.04.2024 20:20

это лишь часть вопроса, на который мне нужно ответить, @mykaf

NewQode10 09.04.2024 20:21

Вы всегда должны объявлять переменные как локальные с помощью let.

Barmar 09.04.2024 20:28

это я просто не включил эту часть своего кода

NewQode10 09.04.2024 20:31

entNum — это строка или число? Вы считаете цифры слева или справа?

Barmar 09.04.2024 20:32

entNum — это строка, и я думаю, она зацикливается, начиная слева

NewQode10 09.04.2024 20:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
97
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

function swap(val, x, y) {
    let arr = (val + "").split("");
    let tmp = arr[x];
    arr[x] = arr[y];
    arr[y] = tmp;
    return parseInt(arr.join(""));
}

console.info(swap(12345, 1, 2));

Если вам действительно нужен цикл, то

function swaps(input, x, y) {
    let arr = (input + "").split("");
    for (let index = 0; index < x.length; index++) {
        let tmp = arr[x[index]];
        arr[x[index]] = arr[y[index]];
        arr[y[index]] = tmp;
    }
    return parseInt(arr.join(""));
}

console.info(swaps(123456, [1], [2]));

Задание требует от них использования цикла.

Barmar 09.04.2024 20:27

ценю ответ, но конкретно спрашивал о циклах :)

NewQode10 09.04.2024 20:27

@tamika соответствующим образом отредактировала мой ответ

Lajos Arpad 09.04.2024 20:33

угу..... для меня это имеет еще меньше смысла :(

NewQode10 09.04.2024 20:39
Ответ принят как подходящий

Перебирайте входную строку, объединяя каждую цифру с выходной строкой. За исключением случаев, когда индекс равен 1 или 2, добавьте цифру к другому индексу, чтобы поменять их местами.

let entNum = '123456';
let newNum = '';
for (let i = 0; i < entNum.length; i++) {
  let digit;
  if (i === 1) {
    digit = entNum[2];
  } else if (i == 2) {
    digit = entNum[1];
  } else {
    digit = entNum[i];
  }
  newNum += digit;
}
console.info("New number:" + newNum)

Омг, спасибо!! Для меня это имеет гораздо больше смысла и легко понять.

NewQode10 09.04.2024 20:50

Функция для замены двух последовательных значений с начальной позиции в строке с помощью цикла:

const nr = `1234567`;
for (let i = 0; i < nr.length; i += 1) {
  console.info(`@ ${i} => ${swapNumbers(nr, i)}`);
}

console.info(`@ ${10} (just returns the string) => ${swapNumbers(nr, 10)}`);

function swapNumbers(str, atPos){
  const nrs = str.split(``);
  
  if (atPos >= nrs.length) { return str; }
  
  for (let i=0; i< nrs.length; i+=1) {
    if (i === atPos) {
      [nrs[i], nrs[i+1]] = [nrs[i+1], nrs[i]];
      break;
    }
  }
  return nrs.join(``)
}
.as-console-wrapper {
    max-height: 100% !important;
}

Другие вопросы по теме