簡體   English   中英

如何讓我的“for 循環”返回我要推送的字符?

[英]How do I get my 'for loop' to return the characters I am trying to push?

我目前正在學習 JavaScript 的基礎知識,但我意識到我的知識存在明顯的差距。 當這個問題變得更加明顯時,我最近開始嘗試挑戰 Codewars。 我最近的努力是試圖讓這個“for循環”將字符推入數字數組,以便將其格式化為電話號碼。 盡管我嘗試了許多不同的解決方案,但它們都沒有真正做到我想要完成的事情。 任何幫助弄清楚我在這里出錯的地方以及我的邏輯中有哪些漏洞將不勝感激。 我最好的嘗試是這樣的:

 const createPhoneNumber = (phoneNumber) => { let formattedNumber = []; formattedNumber.push(phoneNumber) for (let i = 0; i < formattedNumber.length; i++) { if (formattedNumber[i] === 0) { formattedNumber.push('(') } if (formattedNumber[i] === 2) { formattedNumber.push(')') } if (formattedNumber[i] === 5) { formattedNumber.push('-') } } return(formattedNumber.toString()); } console.log(createPhoneNumber(1234567890));

一些反饋:

  • 您將一項插入數組formattedNumber.push(phoneNumber)然后循環遍歷它,所以只有一次迭代
  • 相反,將數字轉換為字符串並遍歷它
  • 檢查formattedNumber[i] === 00進行比較(此檢查失敗,這就是您的 function 返回未格式化電話號碼的原因)但您想比較index ,因此將其更改為i === 0
  • 在 function 的末尾,您使用toString()將字符重新連接在一起,但這將包括值之間的逗號,而不是使用.join('')

 const createPhoneNumber = (phoneNumber) => { const phoneNumberStr = (phoneNumber).toString(); let formattedNumber = []; for (let i = 0; i < phoneNumberStr.length; i++) { if (i === 0) { formattedNumber.push('(') } if (i === 2) { formattedNumber.push(')') } if (i === 5) { formattedNumber.push('-') } formattedNumber.push(phoneNumberStr[i]); } return(formattedNumber.join('')); }; console.log(createPhoneNumber(1234567890))

此外,您可以使用.reduce()來實現相同的目的,這是一個方便的 function 迭代數組,並將值從一次迭代傳遞到下一次:

 const createPhoneNumber = (phoneNumber) => (phoneNumber).toString().split('').reduce((acc, char, i) => { let pre = ''; if (i == 0) { pre = '('; } if (i == 2) { pre = ')'; } if (i == 5) { pre = '-'; } return `${acc}${pre}${char}`; }, ''); console.log(createPhoneNumber(1234567890));

順便說一句,我認為您的問題被否決了,因為您沒有提供預期的 output 或錯誤的更多詳細信息

暫無
暫無

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

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