擴充套件運算子(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...