#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 /…