你應該知道的一些陣列遍歷方法

2021-10-24 09:26:30 字數 3371 閱讀 8398

遍歷陣列的方法有很多種,傳統的有:for、foreach、for-in、 for-of(es6),其他的還有:map、reduce、reduceright、filter、every、some、find(es6)、findindex(es6)

參考mdn

for適用於陣列和字串

let arrorstr =[1

,2,3

,4,5

,6];

// let arrorstr = 'abcdefg';

for(

let i =

0, len = arrorstr.length; i < len; i++

)

foreach
let items =

['1'

,'2'

,'3'];

let copy =

; items.

foreach

((item)

=>

)

扁平化陣列

function

flatten

(arr)

)return result;

}const problem =[1

,2,3

,[4,

5,[6

,7],

8,9]

];flatten

(problem)

;// [1, 2, 3, 4, 5, 6, 7, 8, 9]

for in
var obj =

;for

(var prop in obj)

// "obj.a = 1"

// "obj.b = 2"

// "obj.c = 3"

for of
let iterable =

"boo"

;for

(let value of iterable)

// "b"

// "o"

// "o"

for…in 語句以任意順序迭代物件的除symbol以外的可列舉屬性,會把繼承自父類的屬性也遍歷一遍,所以會更花時間。

for…of 語句遍歷可迭代物件定義要迭代的資料。

object.prototype.

objcustom

=function()

; array.prototype.

arrcustom

=function()

;let iterable =[3

,5,7

];iterable.foo =

'hello'

;for

(let i in iterable)

for(

let i in iterable)

}for

(let i of iterable)

map

map() 方法建立乙個新陣列,其結果是該陣列中的每個元素是呼叫一次 callback(currentvalue, index, array) 函式後的返回值。

var kvarray =[,

,];var reformattedarray = kvarray.

map(

function

(obj)

; robj[obj.key]

= obj.value;

return robj;})

;// reformattedarray 陣列為: [, , ]

reduce

currentvalue (cur) (當前值):陣列中正在處理的元素

currentindex (idx) (當前索引):陣列中正在處理的當前元素的索引。如果提供了initialvalue,則起始索引號為0,否則從索引1起始

sourcearray (src) (源陣列):呼叫reduce()的陣列

accumulator 和 currentvalue 的取值有兩種情況:

如果呼叫 reduce() 時提供了 initialvalue,accumulator 取值為 initialvalue,currentvalue 取陣列中的第乙個值;

如果沒有提供 initialvalue,那麼 accumulator 取陣列中的第乙個值,currentvalue 取陣列中的第二個值。

mdn例子

reduceright() 用法與 reduce 相同,只是執行 callback 函式的順序是降序(從右往左)。

filter

const fruits =[,

'banana'

,'grapes'

,'mango'

,'orange'];

const

filteritems

=(query)

=>

console.

log(

filteritems

('ap'))

; console.

log(

filteritems

('an'))

;// ['banana', 'mango', 'orange']

every
[12,

5,8,

130,44]

.every

(x => x >=10)

;// false[12

,54,18

,130,44

].every

(x => x >=10)

;// true

some
[2,

5,8,

1,4]

.some

(x => x >10)

;// false[12

,5,8

,1,4

].some

(x => x >10)

;// true

find

find() 方法返回陣列中滿足 callback 函式的第乙個元素的【值】。否則返回 undefined。

var inventory =[,

,];function

findcherries

(fruit)

console.

log(inventory.

find

(findcherries));

//

findindex() 方法的用法同 find,只是返回的是第乙個滿足條件的元素的下標

你應該知道的一些Linux技巧

首先,我想告訴大家,在unix linux下,最有效率技巧的不是操作圖形介面,而是命令列操作,因為命令列意味著自動化。如果你看過 你可能不知道的shell 以及 28個unix linux的命令列神器 你就會知道linux有多強大,這個強大完全來自於命令列,於是,就算你不知道怎麼去 做乙個環保主義的...

你應該知道的一些Android ADB 命令

一 裝置相關 輸出格式為 serialnumber state state 有如下幾種 列名解釋 nodevice 沒有裝置 模擬器連線 offline 表示裝置未連線成功或無響應。device 裝置已連線。注意這個狀態並不能標識 android 系統已經完全啟動和可操作,在裝置啟動過程中裝置例項就...

你應該知道一些其他儲存 列式儲存

我們最先接觸的資料庫系統,大部分都是行儲存系統。大學的時候學資料庫,老師讓我們將資料庫想象成一張 每條資料記錄就是一行資料,每行資料報含若干列。所以我們對大部分資料儲存的思維也就是乙個複雜一點的 管理系統。我們在一行一行地寫入資料,然後按查詢條件查詢過濾出我們想要的行記錄。大部分傳統的關係型資料庫,...