Array.from
Array.from 方法用于將兩類對(duì)象轉(zhuǎn)為真正的數(shù)組:類似數(shù)組的對(duì)象(所謂類似數(shù)組的對(duì)象,本質(zhì)特征只有一點(diǎn)桂肌,即必須有l(wèi)ength屬性狰闪。因此,任何有l(wèi)ength屬性的對(duì)象表制,都可以通過Array.from方法轉(zhuǎn)為數(shù)組) 和 可遍歷的對(duì)象(ES6新增的數(shù)據(jù)結(jié)構(gòu) Set和Map)
在ES5模式的時(shí)候我們一般將一個(gè)類數(shù)組變成一個(gè)數(shù)組的做法是
var arrayLike = {'0':'a','1':'b','2':'c',length:3};
var arr1 = Array.prototype.slice.call(arrayLike);
但在ES6中給我們提供了一個(gè)新的方法就是Array.from()
var arrayLike = {'0':'a','1':'b','2':'c',length:3};
var arr2 = Array.from(arrayLike);
第二個(gè)參數(shù)
Array.from()還支持第二個(gè)參數(shù), 作用為類似于數(shù)組的map方法, 用來對(duì)每個(gè)元素進(jìn)行處理然后放入返回的數(shù)組之中.
var arr1 = [1,2,3];
var arr2 = Array.from(arr1, function(value, index, arr){
return value+10;
});
console.log(arr2);//11 12 13
Array.of
由于在ES5的時(shí)候, 使用構(gòu)造方法即new Array(), 無法創(chuàng)建單元素的數(shù)組, Array.of彌補(bǔ)了這一點(diǎn).
var arr = new Array(3);
console.log(arr);//[undefined * 3]
var arr1 = Array.of(3);
console.log(arr1);//[3]
var arr2 = Array.of(1,2,3);
console.log(arr2);//[1,2,3];
數(shù)組實(shí)例的copyWithin()
數(shù)組實(shí)例的copyWithin方法 在當(dāng)前數(shù)組內(nèi)部健爬,將指定位置的成員復(fù)制到其他位置(會(huì)覆蓋原有成員),然后返回當(dāng)前數(shù)組么介。也就是說娜遵,使用這個(gè)方法,會(huì)修改當(dāng)前數(shù)組壤短。
參數(shù)介紹:
名稱 | 功能 |
---|---|
target(必需) | 從該位置開始替換數(shù)據(jù)设拟。 |
start(可選) | 從該位置開始讀取數(shù)據(jù),默認(rèn)為0久脯。如果為負(fù)值纳胧,表示倒數(shù)。 |
end(可選) | 到該位置前停止讀取數(shù)據(jù)帘撰,默認(rèn)等于數(shù)組長(zhǎng)度跑慕。如果為負(fù)值,表示倒數(shù) |
例:
var arr = [1,2,3,4,5,6,7,8,9];
arr.copyWithin(0,3,6);
console.log(arr);//4,5,6,4,5,6,7,8,9
find( )
數(shù)組實(shí)例的find方法摧找,用于找出第一個(gè)符合條件的數(shù)組成員核行。它的參數(shù)是一個(gè)回調(diào)函數(shù),所有數(shù)組成員依次執(zhí)行該回調(diào)函數(shù)蹬耘,直到找出第一個(gè)返回值為true的成員芝雪,然后返回該成員。如果沒有符合條件的成員综苔,則返回undefined
var arr = [1,5,10,15];
var num = arr.find(function(value,index,arr) {
return value > 9;
});
alert(num);//10
findIndex( )
數(shù)組實(shí)例的findIndex方法的用法與find方法非常類似惩系,返回第一個(gè)符合條件的數(shù)組成員的位置,如果所有成員都不符合條件休里,則返回-1蛆挫。
var index = arr.findIndex(function (value, index, arr) {
return value > 9;
})
alert(index);//2
fill( )
fill方法使用給定值,填充一個(gè)數(shù)組妙黍。
var arr = ['a','b','c'];
alert(arr.fill(7));//7,7,7
alert(new Array(3).fill(7));//7,7,7
// fill方法還可以接受第二個(gè)參數(shù)和第三個(gè)參數(shù)棺聊,用于指定填充的起始位置和結(jié)束位置 下面代碼表示要拂,fill方法從1號(hào)位開始,向原數(shù)組填充7漂问,到5號(hào)位之前結(jié)束。
console.log(new Array(8).fill(7,1,5));//(8) [undefined × 1, 7, 7, 7, 7, undefined × 3]
includes( )
Array.prototype.includes方法返回一個(gè)布爾值口四,表示某個(gè)數(shù)組是否包含給定的值.
在ES5我們查找一個(gè)數(shù)組是否含有某個(gè)元素時(shí), 使用的是indexOf( )方法.
var arr = [1,2,3,4,NaN];
console.log(arr.indexOf(2));//輸出: 1
console.log(arr.indexOf(NaN));//輸出: -1;
//原因: 在系統(tǒng)底層indexOf是循環(huán)遍歷arr數(shù)組采用'==='絕對(duì)等于來判斷是否含有該元素.
console.log(arr.includes(1))//輸出: true
console.log(arr.include(NaN))//輸出: true