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

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

刪除數據中的假值

刪除數據中的假值

西瓜媽媽 2017-11-02 21:23:51
function?bouncer(arr)?{ ???return?arr.filter(function(a){ ????return?Boolean(a)?!==?false; ??}); }我不知道為什么a不需要聲明下是arr里的數據?
查看完整描述

1 回答

已采納
?
kevinZee

TA貢獻50條經驗 獲得超39個贊

//首先將myFilter方法添加在數組的原型之上,達到和filter,sort等方法在任意數組實例上調用的效果
//這個callback就是你在調用myFilter這個方法的時候傳進去的函數
Array.prototype.myFilter?=?function?(callback)?{
????//定義一個空數組用于返回結果數組
????var?array?=?[];
????//遍歷當前的數組實例,也就是this
????for?(var?i?=?0;?i?<?this.length;?i++)?{
????????//執行callback,將本次循環的數組的元素,當前元素的下標和數組實例本身作為參數傳給callback
????????//callback需要返回一個布爾值
????????if?(callback(this[i],i,this))?{
????????????//當callback執行結果為真時,表明當前元素符合條件
????????????//將當前的這個數組元素添加進結果數組
????????????array.push(this[i]);
????????}
????}
????//返回結果數組
????return?array;
}

//創建一個數組實例testArr
var?testArr?=?[1,2,3,4,5,6];
//調用myFilter方法,并傳入一個函數
testArr.myFilter(function(a){
????//這個函數的形參a其實就是數組的一項
????//你可以看上面的myFilter的具體實現,因為myFilter調用后,會遍歷調用myFilter的數組實例
????//那么在每一次循環的過程中,都會將數組的當前一項作為參數傳遞給當前函數
????//則此函數執行的結果是真是假,就會影響結果數組的元素
????return?a>3;
})

因為這個a是這個回調函數的參數,上面我寫了一個簡單的myFilter方法實現了類似filter的功能

這個函數在執行循環的時候,會調用這個callback,并將當前的數組項傳入

查看完整回答
反對 回復 2017-11-02
  • 西瓜媽媽
    西瓜媽媽
    不好意思,我底子太差,看不懂這個,請問能在里面多加點注釋么,或者看什么課程會明白呢?
  • kevinZee
    kevinZee
    我重新添加了注釋,但可能表達得不是很清楚。你可以百度 js的回調函數 ,看看相關的文章,從簡單的用法看起
  • 西瓜媽媽
    西瓜媽媽
    非常感謝,非常感謝
  • 1 回答
  • 0 關注
  • 1134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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