Есть ли какой-либо способ использовать цикл для изменения строк переменной из нижнего регистра в верхний регистр?

#javascript #loops

#javascript #циклы

Вопрос:

(Извините за мой плохой английский) Я новичок в JS и постоянно делаю какие-то странные вещи, чтобы узнать, как работает JS! В настоящее время я хочу изменить строки массива из нижнего регистра в верхний регистр и для этого я делаю что-то вроде этого:

         let names = ['Shakir', 'smith', 'Anderson', 'Kyle', 'Ketty', 'jason'];
        
      
for (var i=0; i<names.length; i  ){
    
    // This also doesn't work, i'm not using let (or any other variable keyword because names has already been defined: names[i] = to.UpperCase(names[i]); 
    
// Neither does this: let names[i] = to.UpperCase(names[i]);
    
}
  

Кто-нибудь может сказать мне, где я ошибаюсь?

Еще раз, это мой массив:

 let names = ['Shakir', 'smith', 'Anderson', 'Kyle', 'Ketty', 'jason'];
  

И я хочу преобразовать все строки внутри нее из нижнего регистра в верхний регистр, например:

  let names = ['SHAKIR', 'SMITH', etc..]
  

Возможно ли это?

Ответ №1:

Вы можете назначить запись массива в вашем цикле:

 for (var i=0; i<names.length; i  ){
    names[i] = names[i].toUpperCase();
}
  

Также убедитесь, что имя метода указано правильно, я исправил его выше. И это метод строки, поэтому вы вызываете его в строке, а не передаете строку в нее в качестве аргумента.

Другой вариант — создать новый массив с измененными записями в нем, возможно, присвоив его обратно той же переменной:

 names = names.map(name => name.toUpperCase());
  

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

1. Это сработало, спасибо! Я делал toUpperCase.names вместо обратного! Кроме того, почему мы не можем использовать «let names [i]» в цикле? Я думал, что выполнение «пусть имена [i]» было бы намного безопаснее, чем просто выполнение имен [i]

2. @prettyversatile — let объявляет переменные. В именах переменных не может быть [ или ] . Вы могли бы сделать let newName = names[i].toUpperCase(); , но все, что для этого потребуется, это сохранить имя в верхнем регистре в переменной, которая исчезнет в конце этой итерации цикла (потому что я использовал let в примере; это также верно для const , но не var ).

Ответ №2:

Метод .toUpperCase() и вам нужно добавить строку перед ним (см. Документы:https://www.w3schools.com/JSREF/jsref_touppercase.asp)

Итак, в вашем примере вам нужно будет сделать:

 let names = ['Shakir', 'smith', 'Anderson', 'Kyle', 'Ketty', 'jason']

for (var i = 0; i < names.length; i  ) {
  names[i] = names[i].toUpperCase()
}
  

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

1. ДА. Я только что понял это — Спасибо!

2. Кроме того, почему мы не можем использовать «let names [i]» в цикле? Я думал, что выполнение «пусть имена [i]» было бы намного безопаснее, чем просто выполнение имен [i]

3. Вы уже объявили переменную ‘names’ в виде массива. Вы не можете повторно объявить let в той же области. В цикле вы просто перезаписываете значение в массиве ‘names’ текстом в верхнем регистре, используя переменную i в качестве индекса. Вы можете прочитать больше о переменной let здесь: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /…