簡體   English   中英

為什么長度 function 在此 for 循環中不起作用?

[英]Why is the length function not working in this for loop?

為什么這段代碼在使用長度 function 后不起作用?

如果我使用for(n of names)這個 for 循環那么它工作正常!

我正在嘗試將names數組的每個首字母大寫。 所以,首先我拆分名稱以獲得每個名稱。 然后通過使用循環我想重申名字的每個首字母,通過使用toUpperCase()我將第一個字母設為大寫並通過使用slice(1) ,我將 rest 部分的名字分開,期望第一個字母。

 const namingConvention = function(name) { const names = name.split(' '); const nameProper = []; for (const n = 0; n <= names.length; n++) { const r = n[0].toUpperCase() + n.slice(1); nameProper.push(r); } console.log(nameProper.join(' ')); } namingConvention('mk. john akm'); namingConvention('timari davis');

根據您的代碼,很少有觀察

  • 由於我們在 for 循環的每次迭代中更新n的值,因此應將其定義為let而不是const
  • For 循環條件應該是n < names.length而不是n <= names.length
  • 操作名稱的邏輯不正確, names數組中的每個名稱都應該像這樣訪問names[n]而不是n[0]

根據您的代碼工作演示

 const namingConvention = function(name) { const names = name.split(' '); const nameProper = []; for (let n = 0; n < names.length; n++) { const r = names[n].charAt(0).toUpperCase() + names[n].slice(1); nameProper.push(r); } console.log(nameProper.join(' ')); } namingConvention('mk. john akm'); namingConvention('timari davis');

Workind 演示(更優化/緊湊的解決方案)

 const namingConvention = function(name) { const names = name.split(' '); const nameProper = names.map(n => n.charAt(0).toUpperCase() + n.slice(1)) console.log(nameProper.join(' ')); } namingConvention('mk. john akm'); namingConvention('timari davis');

您正在使用 n,它是一個數字作為數組,正確的用法是用名稱 [n] 替換 n,因為 n 是索引,名稱是您要遍歷的數組

您還需要將 n 和名稱 Poper 更改為普通變量而不是常量。

常量使變量不可更改並且在整個循環中相同。 您還可以使用 charAt(0) 獲取第一個字母

 const namingConvention = function(name){ const names = name.split(' '); var nameProper = [];//var so it can be changed for(var n = 0; n<names.length;n++){//var n so the n can change const r = names[n].charAt(0).toUpperCase() + names[n].slice(1);//names[n] is the string charAt gets the first letter nameProper.push(r); } console.log(nameProper.join(' ')); } namingConvention('mk. john akm'); namingConvention('timari davis');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM