陣列與物件

操作

遍尋陣列的方法

for迴圈

可以用continue,break,性能最好

forEach

  • (ES5) for的優化寫法

  • 無法用continue,要換成return

  • break可用flag自己控制或是用some(),every()取代,有些人會建議用for迴圈清楚點

for-in

  • (ES1) 拿到key值,但是拿到的非數字而是字串,性能差

for-of

  • 直接得到陣列元素

  • 外加 for 可以用 breakcontinue 做到更彈性操作

  • for-of 也可以直接用來遍歷物件

  • 效能稍差於for,但可以做到很多事,有些人偏好這種寫法

circle-info

for...of语句可迭代对象arrow-up-right(包括 Arrayarrow-up-rightMaparrow-up-rightSetarrow-up-rightStringarrow-up-rightTypedArrayarrow-up-rightargumentsarrow-up-right 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句

Object.entries()

  • Object.entries(obj).XXX 取得所有 property 的 name 和 value,並以陣列回傳

ARRAY對象

Array.prototype.push()/pop()

push() 方法會添加一個或多個元素至陣列的末端,並且回傳陣列的新長度。

pop() 方法會移除並回傳陣列的最後一個元素。此方法會改變陣列的長度。

entries

entries() 方法會回傳一個包含陣列中每一個索引之鍵值對(key/value pairs)的新陣列迭代器(Array Iterator)物件。

常與for-of做使用

map

map() 方法會建立一個新的陣列,其內容為原陣列的每一個元素經由回呼函式運算後所回傳的結果之集合。

filer

  • filter() 方法會建立一個經指定之函式運算後,由原陣列中通過該函式檢驗之元素所構成的新陣列

  • var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])

reduce

  • reduce() 將數組元素計算為一個值(從左到右),會對每一個目前迭代到的陣列元素(除了空值以外),可以與前一個回傳的值再次作運算執行 callback 函式,回呼函式會接收四個參數

  • 語法

  • accumulator 是累加值,若在呼叫 reduce() 時有提供 initialValue,則 accumulator 將會等於 initialValue,且 currentValue 會等於陣列中的第一個元素值;若沒有提供 initialValue,則 accumulator 會等於陣列的第一個元素值,且 currentValue 將會等於陣列的第二個元素值。

  • currentValue/currentIndex是裡面的物件

  • currentIndex, array 不一定要給,除非需要,很常看到省略

範例

計算相同元素數量並以物件鍵值顯示arrow-up-right 這個範例就很像是把array變成累積map去做計算便回傳拿到結果

Array.prototype.every()

every() 方法测试一个数组内的所有元素是否都能通过指定函数的测试。它返回一个布尔值。

Array.prototype.some()

some() 方法测试数组中是否至少有一个元素通过了由提供的函数实现的测试。如果在数组中找到一个元素使得提供的函数返回 true,则返回 true;否则返回 false。它不会修改数组。

  • 检测在数组中是否有元素大于 10之類的條件。

Array.prototype.includes()

includes() 方法用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回 false

Last updated