首頁  >  文章  >  web前端  >  JavaScript陣列常用API方法和遍歷方法的小結(附範例)

JavaScript陣列常用API方法和遍歷方法的小結(附範例)

不言
不言轉載
2019-04-11 10:36:002146瀏覽

這篇文章帶給大家的內容是關於JavaScript陣列常用API方法和遍歷方法的小結(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

陣列(array)

ES5 *

map

語法:[].map(function(item, index, array) {return xxx} )
功能:遍歷數組,返回回調返回值組成的新數組,不改變原始數組,不會對空數組進行檢測

forEach

語法:[].forEach( function(item, index, array) {})
功能:無法break,可以用try/catch中throw new Error來停止,不改變原數組

filter

#語法: [].filter(function(item, index, array) {})
功能:過濾,傳回過濾後的數組,不會改變原始數組,不會對空數組進行偵測

eg:

const data = [-8, 9, 5, 3];
const res = data.filter(function(item) {
    if (item > 3) {
      return item
    }
});
console.log(res); // [9, 5]

some

語法:[].some(function(item, index, array) {})
功能:有一個回傳true,則整體為true,不改變原始數組

every

語法:[].every(function(item, index, array) {})
功能:需要全部符合條件才回傳true,有一項回傳false,則整體為false,不改變原始數組

join

語法: [].join(str)
功能:傳回透過指定連接符號str把陣列連接成字串,不改變原始陣列

push / pop

語法:[].push(item)   /  [].pop(item)
功能:陣列末端推入push和彈出pop,傳回改變後陣列的長度/彈出項, 改變原數組

unshift / shift

語法:[].unshift(item)   /  [].shift(item)
#功能:數組頭部推入unshift和彈出shift,返回改變後數組的長度/彈出項,改變原始數組

sort(fn) / reverse

#語法:[].sort(fn)   [].reverse()
功能:依規則排序與反轉,改變原始陣列

##splice

語法:

[].splice(start, number, value1, value2...)功能:傳回刪除元素組成的數組,從
start處開始刪除number個值後插入valueN參數清單到陣列中,改變原始陣列##concat

語法:

[].concat([])

功能:連接n(n >= 2)個數組,返回數組連接後的數組副本,淺拷貝,不改變原始數組
slice

語法:

[].slice(start, end)

功能:傳回截斷後的新數組,不改變原始數組
#indexOf / lastIndexOf(value, fromIndex)

語法:

[].indexOf(value[, fromIndex])

功能:尋找陣列項目
indexOf 從
fromIndex
(預設為0)開始向後尋找valuelastIndexOf 從fromIndex
(預設為-1)開始向前尋找value傳回value對應的下標
reduce / reduceRight

語法:

reduce / reduceRight(callback[, initialValue])

功能:兩兩執行,prev 為上次化簡函數的return值,cur 為當前值(從第二項開始)callback 函數的參數:之前值(previousValue)、當前值( currentValue)、索引值(currentIndex)以及陣列本身(array)
initialValue 可選的初始值,作為第一次呼叫回呼函數時傳給previousValue的值。也就是,為累加等操作傳入起始值(額外的加值)

reduceRight是從陣列的結尾開始

isArray *

語法:

Array.isArray(value)

功能:用於確定參數value是否是一個Array
#ES6

find *

ind(fn)`

功能:傳回符合條件的第一個陣列元素

item
findIndex  *

語法:

[].findIndex(fn)

功能:傳回符合條件的第一個陣列元素的索引
from  *

語法:

[].fill(value[, start, end])

功能:將類似陣列的物件和可遍歷(iterable)
的物件轉為真正的陣列常用:

const set = new Set(3, 8, 9, 0)
Array.from(set)

entries *

語法:

[].entries()

功能:傳回迭代器:傳回鍵值對
【註】

Object.entries(obj)

方法傳回一個給定物件本身可枚舉屬性的鍵值對數組,其排列與使用for...in 循環遍歷該物件時返回的順序一致(區別在於for-in 循環也枚舉原型鏈中的屬性)【MDN】[].entries()
是Array.prototype上的方法keys/values 類似

//数组
const arr = ['a', 'b', 'c'];
for(let v of arr.entries()) {
    console.log(v)
}
// [0, 'a'] [1, 'b'] [2, 'c']

//Set
const arr1 = new Set(['a', 'b', 'c']);
for(let v of arr1.entries()) {
    console.log(v)
}
// ['a', 'a'] ['b', 'b'] ['c', 'c']

//Map
const arr2 = new Map();
arr2.set('a', 'a');
arr2.set('b', 'b');
for(let v of arr2.entries()) {
    console.log(v)
}
// ['a', 'a'] ['b', 'b']

keys *

語法:

[].keys()

功能:傳回迭代器:傳回鍵key(即上面的每個陣列中的第一個值)
values

語法:

[].values()

功能:傳回迭代器:傳回值value(即上面的每個陣列中的第二個值)

includes *

语法:[].includes(val[, fromIndex])
功能:用于从fromIndex判断数组中是否包含val,可替代ES5中的 indexOf

copyWithin

语法:[].copyWithin(target[, start[, end]])
功能:浅复制数组的一部分(start~end)到同一数组中的另目标位置target,返回改变后的数组,而不修改其大小;start默认为0, end默认为length-1; 改变原数组

of

语法:Array.of()
功能:创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型

Array构造函数 & Array.of() 区别
实例说明

Array.of(7);       // [7] 
Array.of(1, 2, 3); // [1, 2, 3]

Array(7);          // [ , , , , , , ]
Array(1, 2, 3);    // [1, 2, 3]

fill

语法:[].fill(value[, start, end])
功能:用指定的元素填充数组,可用于初始化数组,返回改变后的数组,改变原数组
填充值(value),填充起始位置(start,默认为0),填充结束位置(end,默认为数组length)。

遍历

数组

map/forEach/some/every/filter 见上

for

for...in

遍历所有可枚举属性,常用于遍历对象Object

for...of

遍历所有可迭代iterable的对象

对象【属性】

for...in

循环遍历对象自身的和继承的可枚举属性(不含Symbol属性)【可枚举 - Symbol】

Object.keys(obj)

返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)【自身可枚举 - Symbol】

Object.getOwnPropertyNames(obj)

返回一个数组,包含对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)【自身 - Symbol】

Object.getOwnPropertySymbols(obj)

返回一个数组,包含对象自身的所有Symbol属性【自身的Symbol】

Reflect.ownKeys(obj)

返回一个数组,包含对象自身的所有属性,不管是属性名是Symbol或字符串,也不管是否可枚举  【自身所有】

【相关推荐:JavaScript视频教程

以上是JavaScript陣列常用API方法和遍歷方法的小結(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:segmentfault.com。如有侵權,請聯絡admin@php.cn刪除