跳到主要內容

js數組方法大全(下)

# js數組方法大全(下)


記錄一下整理的js數組方法,免得每次要找方法都找不到。圖片有點多,注意流量,嘻嘻!


本期分享




  • forEach()

  • map()

  • filer()

  • every()

  • some()

  • reduce()

  • reduceRight()

  • indexOf()

  • lastIndex()



上期分享




  • join()

  • reverse()

  • sort()

  • concat()

  • slice()

  • splice()

  • push()

  • pop()

  • unshift()

  • shift()

  • toString()

  • toLocaleString()



forEach() --->遍歷



  • 使用熱度:經常用

  • 是否改變原始數組:否

  • 返回:無

  • 參數:



















參數位置 參數類型 是否必選 說明
1 function 三個參數分別是:數組元素、元素的索引、數組本身


  • 說明:該方法無法提前終止運行,如果要提前終止運行,只能使用try塊中,然後拋出一個異常。

  • 小技巧:如果數組是個數組對象形式可以直接操作數組元素改變原始數組本身,因為對象是個引用數據類型嘛!

  • 實例如下:


var log=console.log;
var data=[1,2,3,4,5];
var sum =0;
data.forEach(value=>{
sum+=value;
})
log(sum);

data.forEach((v,i,a)=>{
a[i]=v+1;
})
log(data);

var data_post=[{a:1},{a:2}]
data_post.forEach(value=>{
value.a++;
})
log(data_post)


map() --->映射



  • 使用熱度:經常用

  • 是否改變原始數組:否

  • 返回:返回一個新函數

  • 參數:



















參數位置 參數類型 是否必選 說明
1 function 三個參數分別是:數組元素、元素的索引、數組本身


  • 說明:傳遞給map函數應該有返回值,返回值是新數組的元素。

  • 實例如下:


var log=console.log;
var data=[1,2,3,4,5];
var b= data.map(x=>{
return x*x;
})
log(b)


filter() --->過濾



  • 使用熱度:常用

  • 是否改變原始數組:否

  • 返回:返回過濾后的數組

  • 參數:



















參數位置 參數類型 是否必選 說明
1 function 三個參數分別是:數組元素、元素的索引、數組本身


  • 說明:如果返回值是true或者可以轉化為true的值,那麼這個值就是新數組的元素。

  • 實例如下:


var log=console.log;
var data=[1,2,3,4,5];
var b= data.filter(x=>{
return x<3;
})
log(b)


every() --->檢測



  • 使用熱度:不常用

  • 是否改變原始數組:否

  • 返回:true或者false

  • 參數:



















參數位置 參數類型 是否必選 說明
1 function 三個參數分別是:數組元素、元素的索引、數組本身


  • 說明:當且僅當針對數組中的所有元素調用綁定函數都返回true時,它才返回true。

  • 注意:一旦every或者some已經確定了改返回什麼值得時候就不會遍曆數組了。根據數學上的慣例,在空數組調用時,every返回true,some返回false。

  • 實例如下:


var log=console.log;
var data=[1,2,3,4,5];
var b= data.every(x=>{
return x<10;
})
log(b)

var c= data.every(x=>{
return x%2===0;
})
log(c)


some() --->檢測



  • 使用熱度:不常用

  • 是否改變原始數組:否

  • 返回:true或者false

  • 參數:



















參數位置 參數類型 是否必選 說明
1 function 三個參數分別是:數組元素、元素的索引、數組本身


  • 說明:當數組中至少有一個元素調用綁定函數返回true時,它就返回true。

  • 注意:一旦every或者some已經確定了改返回什麼值得時候就不會遍曆數組了。根據數學上的慣例,在空數組調用時,every返回true,some返回false。

  • 實例如下:


var log=console.log;
var data=[1,2,3,4,5];
var b= data.some(x=>{
return x>10;
})
log(b)

var c= data.some(x=>{
return x%2===0;
})
log(c)


reduce() --->簡化



  • 使用熱度:不常用

  • 是否改變原始數組:否

  • 返回:返回一個值

  • 參數:

























參數位置 參數類型 是否必選 作用
1 function 四個參數分別是:初始化值/數組元素、數組元素、元素的索引、數組本身
2 number 供計算的初始化值


  • 說明:第一個參數是到目前為止的簡化操作累計的結果

  • 注意:如果沒有初始化值,第一次調用函數的第一個參數就是第一個數組元素,第二個參數則是第二個數組元素。如果有初始化值,第一次調用函數的第一個參數就是初始化值,二個參數則是第一個數組元素。

  • 實例如下:


var log=console.log;
var data=[1,2,3,4,5];
var b= data.reduce((x,y)=>{
return x+y;
},0)
log(b)

var c= data.reduce((x,y)=>{
return x*y;
},1)
log(c)

var d= data.reduce((x,y)=>{
return x>y?x:y;
},1)
log(d)


reduceRight() --->簡化



  • 使用熱度:不常用

  • 是否改變原始數組:否

  • 返回:返回一個值

  • 參數:

























參數位置 參數類型 是否必選 作用
1 function 四個參數分別是:初始化值/數組元素、數組元素、元素的索引、數組本身
2 number 供計算的初始化值


  • 說明:第一個參數是到目前為止的簡化操作累計的結果。不同於reduce這個僅僅是從右到左計算。

  • 注意:如果沒有初始化值,第一次調用函數的第一個參數就是第一個數組元素,第二個參數則是第二個數組元素。如果有初始化值,第一次調用函數的第一個參數就是初始化值,二個參數則是第一個數組元素。

  • 實例如下:


var log=console.log;
var data=[1,2,3,4,5];
data.reduceRight((x,y)=>{
log(y)
return x+y;
},0)


indexOf() --->搜索



  • 使用熱度:經常用

  • 是否改變原始數組:否

  • 返回:返回數組索引或者-1

  • 參數:

























參數位置 參數類型 是否必選 作用
1 * 要搜索的數組元素
2 number 從數組哪個索引開始搜索


  • 說明:如果能搜索到結果將返回第一個索引,如果搜索不到就返回-1

  • 注意:如果第二個參數是負數,指的是從數組元素末尾的偏移量位置開始向後搜索,而不是到偏移量位置就截止搜索了,這裡是很容易和splice弄混的。

  • 實例如下:


var log=console.log;
var data=[1,2,3,4,5];
var b=data.indexOf(1,-5);
log(b);


lastIndexOf() --->搜索



  • 使用熱度:經常用

  • 是否改變原始數組:否

  • 返回:返回數組索引或者-1

  • 參數:

























參數位置 參數類型 是否必選 作用
1 * 要搜索的數組元素
2 number 從數組哪個索引開始搜索


  • 說明:和indexOf不同的是lashIndexOf是反向搜索

  • 注意:因為是反向搜索,當第二個參數是負數的時候,就是指從末尾偏移量的位置向前搜索

  • 實例如下:


var log=console.log;
var data=[1,2,3,2,5];
var b=data.lastIndexOf(2,-3)
log(b)

var c=data.lastIndexOf(1,-5)
log(c)

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?



網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!



※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光



※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師"嚨底家"!!



Orignal From: js數組方法大全(下)

留言

這個網誌中的熱門文章

有了四步解題法模板,再也不害怕動態規劃!(看不懂算我輸)

導言 動態規劃問題一直是算法面試當中的重點和難點,並且動態規劃這種通過空間換取時間的算法思想在實際的工作中也會被頻繁用到,這篇文章的目的主要是解釋清楚 什麼是動態規劃 ,還有就是面對一道動態規劃問題,一般的 思考步驟 以及其中的注意事項等等,最後通過幾道題目將理論和實踐結合。 什麼是動態規劃 如果你還沒有聽說過動態規劃,或者僅僅只有耳聞,或許你可以看看 Quora 上面的這個 回答 。 How to explain dynamic 用一句話解釋動態規劃就是 " 記住你之前做過的事 ",如果更準確些,其實是 " 記住你之前得到的答案 "。 我舉個大家工作中經常遇到的例子。 在軟件開發中,大家經常會遇到一些系統配置的問題,配置不對,系統就會報錯,這個時候一般都會去 Google 或者是查閱相關的文檔,花了一定的時間將配置修改好。 過了一段時間,去到另一個系統,遇到類似的問題,這個時候已經記不清之前修改過的配置文件長什麼樣,這個時候有兩種方案,一種方案還是去 Google 或者查閱文檔,另一種方案是借鑒之前修改過的配置,第一種做法其實是萬金油,因為你遇到的任何問題其實都可以去 Google,去查閱相關文件找答案,但是這會花費一定的時間,相比之下,第二種方案肯定會更加地節約時間,但是這個方案是有條件的,條件如下: 之前的問題和當前的問題有着關聯性,換句話說,之前問題得到的答案可以幫助解決當前問題 需要記錄之前問題的答案 當然在這個例子中,可以看到的是,上面這兩個條件均滿足,大可去到之前配置過的文件中,將配置拷貝過來,然後做些細微的調整即可解決當前問題,節約了大量的時間。 不知道你是否從這些描述中發現,對於一個動態規劃問題,我們只需要從兩個方面考慮,那就是 找出問題之間的聯繫 ,以及 記錄答案 ,這裏的難點其實是找出問題之間的聯繫,記錄答案只是順帶的事情,利用一些簡單的數據結構就可以做到。 概念 上面的解釋如果大家可以理解的話,接    動態規劃 算法是通過拆分問題,定義問題狀態和狀態之間的關係,使得問題能夠以遞推(或者說分治)的方式去解決。它的幾個重要概念如下所述。    階段: 對於一個完整的問題過程,適當的切分為若干個相互聯繫的子問題,每次在求解一個子問題...

我的USB為什麼總是無法識別,到底是為甚麼呢?這真的讓我好困擾

其實判斷軟件硬件問題很簡單,在別的機器或換個系統試試就可以了.有些小的問題不妨先用專門軟件格式化下.還有提醒你WINDOWS下格式化時要選擇FAT,不要選FAT32。 倘若插入後,在右下角彈出電腦正在嘗試連接此USB設備的一些信息,有時會彈出對話框讓用戶選擇,有些用戶還沒看清就點了否,或者因為電腦一些初始的設置問題,禁止了USB的一些功能。解決辦法:右鍵點"我的電腦",選"屬性"--"硬件"--"驅動器簽名",在此選擇"忽略",點"確定"。然後重新插上usb,還是不連的話,再右鍵點"我的電腦"--"屬性"--"硬件"--"設備管理器",從中找到"通用串行總線控制器",右鍵,然後"掃描檢測硬件改動"。如果都不行那就是USB識別程序或U盤的問題從控制面板進入添加或刪除硬件將所有USB設備都刪除,重新安裝需要使用的USB設備驅動程序,重新啟動電腦 USB CONNECTOR   USB CONNECTOR  USB CONNECTOR Orignal From: 我的USB為什麼總是無法識別,到底是為甚麼呢?這真的讓我好困擾

為何 Amazon 併購 Oracle 的可能性很大 ?

  2019 年 9 月份 Trefis 團隊建議《Trefis 建議:谷歌可以斥資 90 億美元收購 Nutanix》,最近又建議亞馬遜收購 Oracle。此文是其和《福布斯》雜誌的 Great Speculations 合作撰寫。   根據 Trefis 分析,亞馬遜併購 Oracle 有望帶來巨大的價值。雖然這個想法聽起來很雄心勃勃,但是為了使自己處於雲技術食物鏈的頂端,Oracle 可能是亞馬遜有史以來最好的收購對象。我們詳細說明為什麼亞馬遜可能會收購 Oracle,還在交互式儀錶板中估計了潛在交易的價值。我們的估計基於 Oracle 的獨立價值以及它作為與亞馬遜合併后的實體中一部分而具有的價值。    為何我們認為亞馬遜會收購 Oracle?      兩家公司的概況: 亞馬遜可能是在 2000 年代中期第一家打造公共雲生態系統的供應商,但 Oracle 從事數據庫業務已有近 40 年的歷史。 AWS 的想法是可以將基礎設施出租給希望存儲和計算資源方面減少費用的客戶。根據 Trefis 的估計,AWS 的企業價值高達 4930 億美元,EV/EBITDA 是 27 倍(2020 年 EBITDA 為 180 億美元)。 Oracle 因第一代雲產品失敗而很晚進入雲市場,該公司隨後在開發方面投入大量資金,旨在向市場推出第二代雲。根據 Trefis 的估計,Oracle 的企業價值應為 2510 億美元,EV/EBITDA 是 12.7 倍(2020 年 EBITDA 為 200 億美元)。 AWS 的方法是創建產品,然後讓用戶採用它。Oracle 已經長期擁有這樣的用戶群,卻無法滿足 AWS 能夠滿足的要求。結果是,儘管 Oracle 運行着全球近 50% 的數據庫,但如今 AWS 在公共雲市場的份額超過 40%,而 Oracle 甚至沒有躋身前五名。   理由1:客戶將獲得第二代架構的安全性和 AWS 的客戶服務,因而導致差異化產品與競爭。 由於市場上面臨微軟 Azure(已成為微軟 B2B 和 B2C 產品的底層結構)、谷歌雲(迎來新的掌門人)和 IBM 雲產品(收購 Red Hat 之後)的競爭,AWS 的先行優勢如今可能在減弱。 對老牌雲領導企業構成不利的另一個因素是,原本可以遷移到...