Как использовать для цикла, в результате чего массив в качестве вывода
Я хочу использовать дни в массиве с именем days и получить результат в виде массива, вызвав console.log(days).
Пожалуйста, смотрите ниже: Кто-нибудь может помочь мне закончить код в блоке цикла for?
редактировать (резюме): я задал этот вопрос, чтобы узнать причину, по которой значение каждого "дня" не меняется в этом случае. и Сурен Срапян дал отличный ответ на это: "Вы получаете копию каждого элемента в цикле. Поэтому day является только копией значения элемента, и изменение его на другое значение не изменит элемент в массиве.'
let days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
for (day of days) {
day = day[0].toUpperCase() + day.slice(1);
// your code goes here
}
console.log(days);
4 ответа
for of
не похоже ни на одну простую петлю. Под ним другая конструкция.
Вы получаете копию каждого элемента в цикле. Так day
является только копией значения элемента, и изменение его на другое значение не изменит элемент в массиве.
Вот что происходит под for of
петля.
let days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
const iterator = days[Symbol.iterator]();
let item = iterator.next();
while(!item.done) {
console.log(item.value);
item = iterator.next();
}
Выше код показывает, что for of
цикл предназначен только для чтения
Вы можете использовать функцию Array#map для него
let days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
days = days.map(day => day[0].toUpperCase() + day.slice(1));
console.log(days);
Попробуйте это, и я думаю, что это поможет
const days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
for (let day of days){
let firstLetter= day.substr(0,1)
let otherLetters=day.substr(1)
console.log(firstLetter.toUpperCase().concat(otherLetters));
}
Вы также можете использовать метод Reduce массива
let days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];
let result = days.reduce((r,a)=>r.concat(a.charAt(0).toLocaleUpperCase()+a.slice(1)),[]);
console.log(result)
Вы также можете использовать цикл forEach для выполнения задачи.
days.forEach(function(item, index, array) {
array[index] = item[0].toUpperCase() + item.slice(1)
});
console.log(days);