ES6學習筆記之陣列的擴充套件

2022-04-29 02:45:07 字數 3624 閱讀 5861

擴充套件運算子(spread)是三個點(...),將乙個陣列轉為用逗號分隔的引數序列。

console.log(...[1,2,3]);//1 2 3
const arr1 = [1, 2, 3, 4, 5];

const arr2 = [...arr1];

arr2[0] = 666;

console.log('arr2:', arr2);//[666,2,3,4,5]

console.log('arr1:', arr1);//[1,2,3,4,5]

const arr1=[1,'2','3','4'];

const [,...arr2]=arr1;

console.log('arr2 :', arr2);//arr2 : ["2", "3", "4"]

let arr1=[1,2,3],

arr2=[4,5,6];

let arr3=[...arr1,...arr2];//[1,2,3,4,5,6]

function add(x,y) 

const arr=[1,2];

console.log(add(...arr));//3

// es5 的寫法

function f(x, y, z)

var args = [0, 1, 2];

// es6的寫法

function f(x, y, z)

let args = [0, 1, 2];

f(...args);

// es5 的寫法

// es6 的寫法

math.max(...[14, 3, 77])//77

// 等價於

math.max(14, 3, 77);//77

[..."abcdefg"];//[a,b,c,d,e,f,g]
將類陣列轉換為陣列 (①帶有length屬性的,②可遍歷)

let arraylike = ;

// es5的寫法

var arr1 = .slice.call(arraylike); // ['a', 'b', 'c']

// es6的寫法

let arr2 = array.from(arraylike); // ['a', 'b', 'c']

array.from('hello')
let set=new set(['name','age']);

console.log(array.from(set));//["name", "age"]

array.from還可以接受第二個引數,作用類似於陣列的map方法,用來對每個元素進行處理,將處理後的值放入返回的陣列。

array.from(arraylike, x => x * x);

// 等同於

array.from(arraylike).map(x => x * x);

array.from([1, 2, 3], (x) => x * x)

fill方法使用給定值,填充乙個陣列。

陣列例項的find方法,用於找出第乙個符合條件的陣列成員。它的引數是乙個**函式,所有陣列成員依次執行該**函式,直到找出第乙個返回值為true的成員,然後返回該成員。如果沒有符合條件的成員,則返回undefined。

陣列例項的findindex方法的用法與find方法非常類似,返回第乙個符合條件的陣列成員的位置,如果所有成員都不符合條件,則返回-1。

let arr=[1,3,4,2,8,4,8];

let res=arr.find(v=>)

let resindex=arr.findindex(v=>)

console.log(res,resindex);//8 4

let res=[1,2,3,4,5].find((v,i,arr)=>)

console.log(res);//1

array.prototype.includes方法返回乙個布林值,表示某個陣列是否包含給定的值,與字串的includes方法類似。es2016 引入了該方法。

[1, 2, 3].includes(2)     // true

[1, 2, 3].includes(4) // false

該方法的第二個引數表示搜尋的起始位置,預設為0。如果第二個引數為負數,則表示倒數的位置,如果這時它大於陣列長度(比如第二個引數為-4,但陣列長度為3),則會重置為從0開始。

[1, 2, 3].includes(3, 3);  // false

[1, 2, 3].includes(3, -1); // true

在此之前用indexof判斷是否包含目標值,indexof方法有兩個缺點,1.不夠語義化,它的含義是找到引數值的第乙個出現位置,所以要去比較是否不等於-1,表達起來不夠直觀。2.它內部使用嚴格相等運算子(===)進行判斷,這會導致對nan的誤判。

[nan].indexof(nan)//-1

[nan].includes(nan)//true

陣列的成員有時還是陣列,array.prototype.flat()用於將巢狀的陣列展開,變成一維的陣列。該方法返回乙個新陣列,對原資料沒有影響。

[1,2,[3,4],5,[6]].flat();

// [1, 2, 3, 4, 5, 6]

flat()預設只會展開一層,如果想要展開多層的巢狀陣列,可以將flat()方法的引數寫成乙個整數,表示想要展開的層數,預設為1。

[1, 2, [3, [4, 5]]].flat()

// [1, 2, 3, [4, 5]]

[1, 2, [3, [4, 5]]].flat(2)

// [1, 2, 3, 4, 5]

如果不管有多少層巢狀,都要轉成一維陣列,可以用infinity關鍵字作為引數。

[1, [2, [3]]].flat(infinity)

// [1, 2, 3]

如果有空,則會自動跳過空處

[1,2,,3,4,[5]].flat();

//[1,2,3,4,5]

ES6學習之陣列擴充套件

擴充套件運算子 將陣列分割為用逗號分割的引數序列 console.log 1,2,3 1 2 3 function test x,y,z var arg 1,2,3 null,arg 1 2 3 test arg 1 2 3 擴充套件運算子的應用 const a 1,2 複製陣列a const b ...

陣列的擴充套件 ES6學習筆記

2.array.from 3.array.of 4.陣列例項的find 和findindex 5.陣列例項的fill 6.陣列例項的entries keys 和values 7.陣列例項的includes 含義 擴充套件運算子是三個點 用於將乙個陣列轉為用逗號分隔的引數序列,主要用於函式呼叫。fun...

ES6之陣列的擴充套件

es6在陣列方面增加了一些方法和原型屬性,有些還是蠻有用的。擴充套件運算子 把陣列或者類陣列轉成用逗號隔開的引數 把類陣列轉成陣列,有限制 類陣列就是有長度的變數 var str wade console.log str w a d e 把陣列轉成用逗號隔開的引數序列 var arr 1,2,3 c...