日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Falsy Bouncer(第二种解决方式)

發布時間:2024/9/5 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Falsy Bouncer(第二种解决方式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

<-- 要求說明 -->

過濾數組假值

(真假美猴王)

刪除數組中的所有假值。

在JavaScript中,假值有false、null、0、""、undefined 和 NaN。

當你完成不了挑戰的時候,記得開大招'Read-Search-Ask'。

這是一些對你有幫助的資源:

  • Boolean Objects
  • Array.filter()

?

<-- 自己理解 -->

這里的Boolean()是新知識點,先學習了一下Boolean()方法:

new Boolean(value) ?// ?value可選

如果value值不是布爾值,則會將其轉換為布爾值。如果省略value,或者value的值為0,-0,null,false,NaN,undefined或者空字符串(“”),則生產的Boolean對象的值為false。如果傳入的參數是 DOM 對象??document.all,也會生成值為?false?的?Boolean?對象。任何其他的值,包括值為?"false"?的字符串和任何對象,都會創建一個值為?true?的?Boolean?對象。

注意:不要將基本類型中的?布爾值true和false?與?值為true和false的Boolean對象?弄混了。

當Boolean對象用于條件語句的時候(直接應用月條件語句),任何不是undefined和null的對象,包括值為false的Boolean對象,都會被當做true來對待,如下面代碼:

var x = new Boolean(false); if(x){// 這里的代碼會被執行 }

基本類型的布爾值不受此規則影響,如下面代碼:

var x = false; if(x){// 這里的代碼不會被執行 }

不要用創建Boolean對象的方式將一個非布爾值轉化成布爾值,直接將Boolean當做轉換函數來使用即可,如下面代碼:

var x = Boolean (expression ); // 推薦 var x = new Boolean( expression ) // 不太好

如果在條件判斷語句中直接使用Boolean作為轉換函數,代碼如下:

var x = Boolean( false ); if(x){// 這里的代碼不會被執行 }

?

該實例中可以使用Boolean對象將數組中的所有元素進行判斷,Boolean對象返回false即為數組中的價值。

使用for循環進行遍歷,將數組中的每一個值依次傳入Boolean函數,返回false則對該值進行刪除操作。

delete和splice()都可以實現數組刪除的操作,但是delete僅將值設為undefined,數組的length不變,這里需要使用splice()。

?

<-- 遇到的問題 -->

無論使用for循環還是使用filter()都不會得到正確結果,恍然大悟,使用splice()刪除后,數組長度發生變化,再次回到for循環或filter中,整個遍歷的會受到影響,會存在刪除一個后就會跳過一個值,是遍歷造成混亂。

?

<-- 代碼實現 -->

解決方法一:

遇到的問題主要是刪除前面的數組元素后,后面的索引值會前移,導致遍歷混亂,如果從后面開始遍歷,那么對前面的索引值就不會產生影響。代碼如下:

function bouncer( item ){for( var i=arr.length-1; i>=0; i-- ){if( Boolean( arr[i] ) == false ){arr.splice( i, 1 );}}return arr; }

?

解決方法二:

filter()為數組中的每個元素調用一次?callback?函數,并利用所有使得?callback?返回 true 或?等價于 true?的值?的元素創建一個新數組。

可以將數組每個值傳遞給Boolean,返回的true或false再作為filter()的callback的參數,返回false不處理,返回true則將所對應的值存入一個數組中,最后遍歷結束,將所有真值傳遞到一個數組中并return,等同于將價值刪除。

代碼實現:

function bouncer( arr ){return arr.filter( function( item, index, array ){return Boolean( item );}) }

?

?

<-- 知識點總結 -->

Boolean()

filter()

delete和splice()刪除數組

轉載于:https://www.cnblogs.com/daleizi147/p/8445840.html

總結

以上是生活随笔為你收集整理的Falsy Bouncer(第二种解决方式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。