iT邦幫忙

0

題目解題

最近在練習javascript
題目為連結
想請問題解中

while(!store[n] && n!=1){
        store[n] = n; 
        n.toString().split("").forEach(function(v,i){
            if(i == 0) {n = 0};
            n += v*v;
        })
        n = parseInt(n);
    }

if(i == 0) {n = 0};
這一段主要是在判斷什麼情況,謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
石頭
iT邦高手 1 級 ‧ 2017-08-20 17:25:41
n.toString().split("");

上面程式碼將數字分割成字串
例如: 14 => var arr =new Array["1", "4"];

forEach(function(v,i){
            if(i == 0) n = 0;
            n += v*v;
})

v 代表 陣列
i 代表 index目前索引(int)

if(i == 0) {n = 0};

這一段主要是
代表此數歸0 因為之前n有計算出值 在此就歸0

javascript forEach用法

Rafiki iT邦新手 5 級 ‧ 2017-08-20 18:22:01 檢舉

謝謝你的回應
不過就我對forEach的了解
第一個參數是元素的值
第二個是index
這樣一定會取到index=0
也就是該函式的i=0
這樣n就會直接是0
map也就會有重複是0的狀況
可是這樣變成不管帶哪個數
都會是0
不知道是我哪裡理解錯了

fillano iT邦超人 1 級 ‧ 2017-08-21 11:24:10 檢舉

後面不是已經有n+=v*v嗎?你的0要從哪裡跑出來?

0
jieweiwu
iT邦見習生 ‧ 2017-08-21 14:29:21

你要相加之前不是應該要有個變數去存現在的總和是多少嗎
這個變數在跑每個平方的值之前要宣告為零
這個寫法是偷懶把零寫在裡面...
其實跟下面這段是一樣的

var sum = 0
 n.toString().split("").forEach(function(v,i){
    sum += v*v;
})
n = sum

我要發表回答

立即登入回答