国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ES6數(shù)組 - 新增的創(chuàng)建數(shù)組的方法

e10101 / 2830人閱讀

摘要:它主要用在以類數(shù)組對象和可迭代對象為藍(lán)本,創(chuàng)建對應(yīng)的數(shù)組。類數(shù)組對象我們最熟悉的類數(shù)組對象,應(yīng)該就是的對象了。

在ES6之前,創(chuàng)建數(shù)組的方式有2種:
一: 通過數(shù)組字面量

let array = [1,2,3];
console.log(array);//[1,2,3]

二: 通過new Array()創(chuàng)建數(shù)組

let array = new Array(1, 2, 3);
console.log(array); //[1,2,3]

在大多數(shù)情況下new Array()運(yùn)行良好:

let array = new Array(1, 2);
console.log(array.length); //2
console.log(array[0]); //1
console.log(array[1]); //2

array = new Array("a");
console.log(array.length); //1
console.log(array[0]);//"a"

array = new Array(1, "a");
console.log(array.length); // 2
console.log(array[0]);//1
console.log(array[1]);//"a"

但是new Array()有一種詭異的情況:

let array = new Array(2);
console.log(array[0]); // undefined
console.log(array[1]);// undefined
console.log(array.length);  // 2  

當(dāng)我們給new Array()傳遞單個(gè)數(shù)字參數(shù)時(shí),這個(gè)數(shù)字不是作為數(shù)組元素,而是該數(shù)組的length屬性而存在,而數(shù)組本身則是一個(gè)空數(shù)組。
為了解決上面這個(gè)令人類沒有安全感的特性,ES6引入了Array.of()來解決這個(gè)問題:
三:Array.of()
顧名思義,of()方法就是以它接受到的參數(shù)作為元素來創(chuàng)造數(shù)組,上面我們說的單個(gè)數(shù)字參數(shù)的情況也同樣適用:

let array = Array.of(3);
console.log(array.length); // 1
console.log(array[0]); // 3

array = Array.of(1, 2);
console.log(array.length);// 2
console.log(array[0]); // 1
console.log(array[1]);// 2

array = Array.of("a");
console.log(array.length);// 1
console.log(array[0]);// "a"

array = Array.of(1, "a");
console.log(array.length); // 2
console.log(array[0]);// 1
console.log(array[1]);// "a"

四:Array.from()
ES6還增加了一個(gè)Array.from(),也是用了創(chuàng)建一個(gè)數(shù)組。它主要用在以類數(shù)組對象可迭代對象為藍(lán)本,創(chuàng)建對應(yīng)的數(shù)組。

1: Array.from(類數(shù)組對象)

我們最熟悉的類數(shù)組對象,應(yīng)該就是function的arguments對象了。接下來,我們看一個(gè)用Array.from()創(chuàng)建包含arguments元素的數(shù)組:

function createArrayFrom() {
    console.log(arguments instanceof Array); // false
    return Array.from(arguments);
}

let array = createArrayFrom(1, 2, 3);
console.log(array instanceof Array); // true
console.log(array.length); //3
console.log(array[0]);//1
console.log(array[1]);//2
console.log(array[2]);//3
console.log(array.indexOf(2)); //1
2: Array.from(可迭代對象)
Array.from()也可以把一個(gè)可迭代對象轉(zhuǎn)換為數(shù)組:
let iteratorObject = {
    *[Symbol.iterator](){
        yield 1;
        yield 2;
        yield 3;
    }
};
let array = Array.from(iteratorObject);
console.log(array instanceof Array); // true
console.log(array.length); // 3
console.log(array[0]); // 1

五:Array.from()的第二個(gè)參數(shù)
前面的例子,我們看到了一個(gè)類數(shù)組對象和可迭代對象作為Array.from()的第一個(gè)參數(shù),從而創(chuàng)建出包含它們元素的數(shù)組。Array.from()的第二個(gè)參數(shù)是一個(gè)函數(shù),這個(gè)函數(shù)用來將類數(shù)組對象和可迭代對象的元素進(jìn)行某種變換后,再作為生出數(shù)組的元素,例如:

let iteratorObject = {
    *[Symbol.iterator](){
        yield 1;
        yield 2;
        yield 3;
    }
};
let array = Array.from(iteratorObject, (item)=>{return item + 1});
console.log(array[0]); //2
console.log(array[1]); //3
console.log(array[2]); //4

這個(gè)例子里,我們提供了把每個(gè)元素值加一的變換,所以原本的1,2,3,置換到新的數(shù)組之后,元素是2,3,4。

六: Array.from()的第三個(gè)參數(shù)
Array.from()還提供第三個(gè)參數(shù)可用,第三個(gè)參數(shù)用來指定在第二個(gè)參數(shù)所代表的回調(diào)函數(shù)的this的值,看一個(gè)例子:

let firstHelper = {
    diff: 1,
    add(value){
        return value + this.diff;
    }
};
let secondHelper = {
    diff: 2
};
function createArrayFrom() {
    return Array.from(arguments, firstHelper.add, secondHelper);
}

let array = createArrayFrom(1, 2, 3);
console.log(array); //[3, 4, 5]

上面的例子里面,我們在回調(diào)方法add()里面使用了this(這行代碼:value + this.diff)。add()定義在firstHelper對象,且firstHelper對象也有diff屬性;但是我們通過給三個(gè)參數(shù)傳入secondHelper,從而使得在firstHelper.add()方法里的this值是secondHelper。

以上就是ES6新增的Array.of()和Array.from()方法,可以使得開發(fā)者用更少的代碼應(yīng)對更多變的創(chuàng)建數(shù)組的場景。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/106241.html

相關(guān)文章

  • 深入理解ES6(四)( 數(shù)組擴(kuò)展)

    摘要:例如,會(huì)刪除數(shù)組中的前兩項(xiàng)。插入的項(xiàng)數(shù)不必與刪除的項(xiàng)數(shù)相等。對數(shù)組進(jìn)行遍歷循環(huán),對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù)。判斷數(shù)組中是否存在滿足條件的項(xiàng),只要有一項(xiàng)滿足條件,就會(huì)返回。 深入理解ECMA2015(四) —— 數(shù)組的擴(kuò)展 一、JavaScript數(shù)組詳解回顧(ES6之前) (1)數(shù)組的創(chuàng)建 使用 Array 構(gòu)造函數(shù): var arr1 = new Array(); //創(chuàng)建一個(gè)...

    big_cat 評論0 收藏0
  • Javascript內(nèi)置對象新增接口列表

    網(wǎng)上很少有提供不同版本接口對比的文章,所以自己總結(jié)一下。 Array Method Description Modify Version concat 連接多個(gè)數(shù)組,返回?cái)?shù)組副本,參數(shù)可以為值或數(shù)組 否 ES3 join 把數(shù)組元素組合為字符串 否 ES3 pop 刪除并返回最后一個(gè)元素 是 ES3 push 向數(shù)組末尾添加一個(gè)或多個(gè)值,返回?cái)?shù)組長度 是 ES3 reve...

    xuhong 評論0 收藏0
  • 白話es6系列一:Array.of()和Array.from()

    摘要:更重要的是,代碼意圖也直觀數(shù)組長度,每一項(xiàng)按照約定的規(guī)則進(jìn)行初始化。上面代碼創(chuàng)建了一個(gè)長度為的數(shù)組其中的項(xiàng)為數(shù)字。的強(qiáng)大不止于此,它還能接受一個(gè)映射函數(shù)上面代碼中,被直接傳遞給方法,從而將它包含的值轉(zhuǎn)換成了數(shù)組。 es6新增了二種方法:Array.of()和Array.from(),它們有什么用途呢?在平時(shí)的開發(fā)中能給我們帶來什么方便呢?本篇將從一個(gè)創(chuàng)建數(shù)組的小問題開始,逐步揭開它們的...

    newtrek 評論0 收藏0
  • 《深入理解ES6》筆記—— 改進(jìn)數(shù)組功能(10)

    摘要:創(chuàng)建數(shù)組中創(chuàng)建數(shù)組的方式數(shù)組字面量一個(gè)數(shù)組。傳入一個(gè)回調(diào)函數(shù),找到數(shù)組中符合當(dāng)前搜索規(guī)則的第一個(gè)元素,返回它,并且終止搜索。用新元素替換掉數(shù)組內(nèi)的元素,可以指定替換下標(biāo)范圍。 ES5提供的數(shù)組已經(jīng)很強(qiáng)大,但是ES6中繼續(xù)改進(jìn)了一些,主要是增加了新的數(shù)組方法,所以這章的知識(shí)非常少。 創(chuàng)建數(shù)組 ES5中創(chuàng)建數(shù)組的方式:數(shù)組字面量、new一個(gè)數(shù)組。 const arr1 = [] //數(shù)組字...

    inapt 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<