遍歷陣列的方法有很多種,傳統的有: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++
)
foreachlet 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 invar obj =
;for
(var prop in obj)
// "obj.a = 1"
// "obj.b = 2"
// "obj.c = 3"
for oflet 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 的取值有兩種情況:mdn例子如果呼叫 reduce() 時提供了 initialvalue,accumulator 取值為 initialvalue,currentvalue 取陣列中的第乙個值;
如果沒有提供 initialvalue,那麼 accumulator 取陣列中的第乙個值,currentvalue 取陣列中的第二個值。
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 系統已經完全啟動和可操作,在裝置啟動過程中裝置例項就...
你應該知道一些其他儲存 列式儲存
我們最先接觸的資料庫系統,大部分都是行儲存系統。大學的時候學資料庫,老師讓我們將資料庫想象成一張 每條資料記錄就是一行資料,每行資料報含若干列。所以我們對大部分資料儲存的思維也就是乙個複雜一點的 管理系統。我們在一行一行地寫入資料,然後按查詢條件查詢過濾出我們想要的行記錄。大部分傳統的關係型資料庫,...