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

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

這個程序里在第二個循環里只能輸出一個值

這個程序里在第二個循環里只能輸出一個值

黃志明 2016-03-24 11:48:40
我知道正確的編程的方法,我想知道的是原因。按道理來說此時的arr1[]有十個值,其中四個有值,其余六個未定義,那么為什么第二個循環只能輸出一個值?難道循環里數組索引到空值就自動停止了?<!DOCTYPE ?HTML><html ><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>流程控制語句</title><script type="text/javascript">var infos = [? ? ['小A','女',21,'大一'],? ? ['小B','男',23,'大三'], ['小C','男',24,'大四'], ['小C','男',24,'大四'], ['小D','女',21,'大一'], ['小E','女',22,'大四'], ['小F','男',21,'大一'], ['小G','女',22,'大二'], ['小H','女',20,'大三'], ['小I','女',20,'大一'], ['小J','男',20,'大三']];?//第一步把之前的數據寫成一個數組的形式,定義變量為 infos? var arr1=[];? var n=0;? for (var i=0;i<infos.length;i++){? ? ? if (infos[i][3]=="大一"){? ? ? ? ? arr1[n]=infos[i];? ? ? ? ? document.write(arr1[n]+"<br/>")? ? ? ? ??? ? ? }? ? ? n=n+1;? }? document.write("大一人數: "+arr1.length+"<br/>");?//第一次篩選,找出都是大一的信息for (var i=0;i<arr1.length;i++){? ? ? if (arr1[i][1]=="女"){? ? ? ? ? document.write(arr1[i][0]+"<br/>")? ? ? }? }?//第二次篩選,找出都是女生的信息</script></head><body></body></html>
查看完整描述

1 回答

已采納
?
李曉健

TA貢獻1036條經驗 獲得超461個贊

for?(var?i=0;i<infos.length;i++){
????if?(infos[i][3]=="大一"){
????????//這里不能像你那么寫
????????arr1.push(infos[i]);
????????document.write(infos[i]+"<br/>")
????}
????n=n+1;
}

你那么寫的話,新數組的長度會是10,里面有幾個值都是undefined, ?然后你在后面判斷是不是女生時 ?arr1[i][1]=="女" ;?arr1[i]就會等于undefined ,然后你再取二個值,也就是?arr1[i][1] 就相當于?undefined[1] ?就報錯了

查看完整回答
1 反對 回復 2016-03-24
  • 黃志明
    黃志明
    你前邊說的,我都知道。但是把上面的代碼輸進去,是有一個結果的,按你后面說的應該一個也沒有???是不是在出現第一個undifined的時候,程序就報錯了?
  • 黃志明
    黃志明
    搞明白了!你的解答幫了大忙!
  • 1 回答
  • 1 關注
  • 1444 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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