iT邦幫忙

0

為什麼會出現undefined? 應該如何修正?

  • 分享至 

  • xImage
let PW = 26;

let pwArray = [0,1,2,3,4,5,6,7,8,9]

let submitEl = document.getElementById("submit");

let element = "";

for (let index = 0; index < pwArray.length; index++) {

    const RandomNum = Math.floor(Math.random()*pwArray.length);

    let pwSlice = pwArray.slice(RandomNum,RandomNum+1)

    let PWc = pwSlice*RandomNum;

     element += pwArray[PWc];
    
}
console.log(element);

為什麼會出現undefined?

console.log都會用了,怎麼不放在迴圈內檢查值分別是什麼呢~~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
greenriver
iT邦研究生 4 級 ‧ 2023-05-11 08:30:12
最佳解答

問題出在最後兩段,

let pwSlice = pwArray.slice(RandomNum,RandomNum+1)
//下方
let PWc = pwSlice*RandomNum;
element += pwArray[PWc];

我不清楚你要是做什麼功能,所以不清楚要怎麼修改。
不過可以確定PWc有可能會超出pwArray的最大index
所以找不到數值,自然就是undefined
例如:

//RandomNum = 6
let pwSlice = [6]
let PWc = [6]*6 = 36
element += pwArray[36];//找不到,自然是undefined

題外話:
pwSlice是陣列,拿去乘上數字RandomNum,很奇怪。
雖然因為pwSlice裡只有一個數字,所以不會出錯,但如果有兩個以上就會出錯。

1
海綿寶寶
iT邦大神 1 級 ‧ 2023-05-10 23:11:58

把倒數第四列改成如下
element += '['+PWc+']'; //pwArray[PWc];

就可以知道程式會去存取超出 pwArray 個數的位置
導致 undefined

0
nick12345
iT邦新手 4 級 ‧ 2023-05-11 13:08:29

試試
let element = "";
改成
let element = 0;

我要發表回答

立即登入回答