![](/img/trans.png)
[英]I am trying to get my triangle “duck bill” to scale with the width of my face, how can I do this?
[英]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] === 0
將值與0
進行比較(此檢查失敗,這就是您的 function 返回未格式化電話號碼的原因)但您想比較index ,因此將其更改為i === 0
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.