-1

我想将名为“days”的数组中的天数大写,并仅通过调用“console.log(days)”以数组形式获取结果
请参见下文:谁能帮我完成for块中的代码环形?

编辑(摘要):我对此提出质疑,以了解在这种情况下每个“天”的值没有改变的原因。Suren Srapyan 对此提供了一个很好的答案:'您正在获取循环中每个项目的副本。所以 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

4 回答 4

0

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);

于 2017-09-17T07:58:42.443 回答
0

您还可以使用 forEach 循环来完成任务。

days.forEach(function(item, index, array) {
      array[index] = item[0].toUpperCase() + item.slice(1)
});
console.log(days);
于 2017-09-17T08:06:45.917 回答
0

你也可以使用数组的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)

于 2017-09-17T08:10:41.090 回答
0

试试这个,我认为它会有所帮助

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));

} 
于 2018-05-25T10:26:29.603 回答