js some()方法詳解以及實際應用

對數(shù)組中的每個元素都執(zhí)行一次指定的函數(shù)(callback),直到此函數(shù)返回 true,如果發(fā)現(xiàn)這個元素,some 將返回 true,如果回調(diào)函數(shù)對每個元素執(zhí)行后都返回 false ,some 將返回 false。

var arr=[1,2,3,4,5];
arr.some(function(el,index){
  return (el==5);
});

在這段代碼中,當遍歷到5==5時,為return true,這能做什么用呢?前幾天作者就碰到了一個需求:

QQ截圖20170928185056.png

當點擊上面的任務欄時,上面被點擊的任務欄跳到下面的框,當點擊下面的任務欄時,被點擊的任務欄移動到上邊的框里。說到這里其實還好做,用jq的remove()和append就可以實現(xiàn),當點擊上面的任務欄時,將任務欄remove掉,然后用append添加到下面的div里,注意先添加,后remove,一會你就知道為什么了。
還有個附加需求,就是當刷新頁面的時候,兩個框里的狀態(tài)不變(前提:這個功能需要前臺實現(xiàn)),這時,我就想到了用cookie或者stroage,我選擇了localstroage,每個人物欄都有個id,將這些id存在stroage里邊,這樣刷新的時候,任務欄會依據(jù)stroage重新排列,好,到此為止還沒有任何問題,但是有沒有想過一種情況,當用戶閑的蛋疼,一個任務欄兩個盒子之間來回點擊,這樣一來,你的數(shù)組里就會用重復的id,這時候some就上場了,還用上面那段代碼,比如已經(jīng)存了id為1,2,3,4,5,這時用戶瞎扯淡,來回點了好幾次id為5的任務欄,這是這段代碼就會返回true。然后用if判斷一下,如果為false,就將這個id push到數(shù)組里,然后把id經(jīng)過字符串拼接append到下面的div里,然后把被點擊的dom remove掉,這樣就不怕遇到熊孩子了。~
最后送上一個彩蛋,其實some方法還能節(jié)省性能,仔細看第一句,對數(shù)組中的每個元素都執(zhí)行一次指定的函數(shù)(callback),直到此函數(shù)返回 true,如果發(fā)現(xiàn)這個元素,some 將返回 true,也就是說,當代碼改為el==2,判斷為true了,后面的遍歷將不再執(zhí)行。

QQ截圖20170928184118.png

為什么remove排在最后,你找到答案了嗎?
最后獻上一句作者最近讀的《好嗎,好的》里的一句話:

“平行世界,多元生活,既可以朝九晚五,又可以浪跡天涯。”——大冰

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,533評論 19 139
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內(nèi)部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,637評論 18 399
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,311評論 0 17
  • 京東衣錦還鄉(xiāng) 人若成名屁亦香,一呼百應眾景仰。 走在哪里掌聲亮,一路鮮花喜洋洋。 君若羨慕多努力,飛上枝頭變鳳凰。
    陳老師_7891閱讀 518評論 0 1
  • ---------------Agan智投機器人戰(zhàn)國&短線晚報---------------- 日期: 2017-...
    Agan智投機器人閱讀 206評論 0 0

友情鏈接更多精彩內(nèi)容