亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JS 無法對數組項調用函數

JS 無法對數組項調用函數

慕慕森 2022-10-08 17:31:14
我創建了一個函數來檢查數組的元素是否可被下一項整除。如果不是,則應從數組中刪除下一項。我創建了一個由兩個數組組成的測試數組。當我遍歷它們并 console.log 它們時,它們會按預期返回。當我在 for 循環而不是 console.log 中調用我的函數 (deleteItem) 時,它只返回第一個數組元素的結果,而不是第二個。我真的很困惑,不明白這一點。誰能給我一個提示我做錯了什么?先感謝您!let testArray = [[240,12, 10, 8,23],[240,12, 10, 8,24]];function deleteItem(array) {      if(array.length<=1){            return array;      }      else{            for(i=0; i<array.length-1;i++) {                  let changed = true;                  while(changed){                        if(array[i]%array[i+1]!=0) {                              array.splice(i+1,1);                              i=0;                              break;                        }                        else {changed=false};                  }            }      }      return array;}如果我只控制臺日志,它會按預期返回兩個元素:for(i=0;i<testArray.length;i++){      console.log(  testArray[i]);      //console.log(deleteItem(  testArray[i]));}returns:[240, 12, 10, 8, 23][240, 12, 10, 8, 24]如果我使用我的函數,它只會調用第一個數組元素for(i=0;i<testArray.length;i++){      console.log(  testArray[i]);      console.log(deleteItem(  testArray[i]));}returns:[240, 12, 10, 8, 23][240, 12]I expect:[240, 12, 10, 8, 23][240, 12][240, 12, 10, 8, 24][240, 12]
查看完整描述

1 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

不要忘記用“let”聲明你的for循環變量。一旦添加了let,它就可以正常工作。(在 deleteItem 函數中也是如此)


for(let i = 0; i < testArray.length; i++){

      console.log(testArray[i]);

      console.log(deleteItem(testArray[i]));

}

當您循環遍歷您的 testArray 并輸出每個元素時沒有問題,但是在您的 deleteItem() 函數中,您有另一個帶有名為“i”的變量的 for 循環,該變量未在本地聲明。


這意味著:您以全局 i = 0 開始 testArray 循環。然后調用 deleteItem 函數,該函數也將相同的全局 i 用于其 for 循環。所以在 deleteItem 函數完成后,全局 i 設置為 4,原來的 for 循環條件不再成立。這就是為什么不為您的第二個 testArray 元素調用 deleteItem 函數的原因。


查看完整回答
反對 回復 2022-10-08
  • 1 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號