成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

es6新增的數(shù)組方法有哪些

這篇文章主要介紹“es6新增的數(shù)組方法有哪些”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強(qiáng),希望這篇“es6新增的數(shù)組方法有哪些”文章能幫助大家解決問題。

遂昌網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。創(chuàng)新互聯(lián)公司2013年至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。

新增數(shù)組方法:1、from(),可將類數(shù)組或可迭代對象轉(zhuǎn)為真正的數(shù)組;2、of(),可將一組值轉(zhuǎn)換為數(shù)組,它彌補(bǔ)數(shù)組構(gòu)造函數(shù)Array()的不足;3、find()和findIndex(),返回第一個符合條件的數(shù)組元素;4、fill()等等。

本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。

es6新增數(shù)組方法

1、Array.from()

Array.from 方法用于將兩類對象轉(zhuǎn)為真正的數(shù)組:

  • 類似數(shù)組的對象(array-like object)

  • 可遍歷(iterable)的對象(包括 ES6 新增的數(shù)據(jù)結(jié)構(gòu) Set 和 Map)

意味著,只要部署了Iterator接口的數(shù)據(jù)結(jié)構(gòu),Array.from都能將其轉(zhuǎn)換為數(shù)組

實際開發(fā)中,一般可以用來轉(zhuǎn)換DOM操作返回的NodeList集合,以及函數(shù)內(nèi)部的arguments對象

傳一個參數(shù)時,用于將類數(shù)組轉(zhuǎn)為真正的數(shù)組

  • 數(shù)組去重

const arr = [1,2,3,3,3,2,5];
console.log(Array.from(new Set(arr))); //[1,2,3,5]
//...也可實現(xiàn)相同的效果
console.log([...new Set(arr)]) //[1,2,3,5]

對于沒有部署該方法的瀏覽器,可使用Array.prototype.slice方法代替

cosnt toArray = (() => {
    Array.from ? Array.from : obj => [].slice.call(obj)
})()

還可以接收第二個參數(shù),第二個參數(shù)傳入一個函數(shù),實現(xiàn)類似map方法的效果,對每個元素進(jìn)行處理并返回處理好的數(shù)組

Array.from([1,2,3] , item => item *2)    //[2,4,6]
  • 返回字符串的長度

可以用于將字符串轉(zhuǎn)為數(shù)組,然后返回字符串的長度,因為它能夠正確處理各種Unicode字符,從而避免JS將大于/uFFFF的Unicode字符算作2個字符的自身bug

function countLength(string) {
    return Array.from(string).length
}

2、Array.of()

Array.of 方法用于將一組值,轉(zhuǎn)換為數(shù)組。彌補(bǔ)數(shù)組構(gòu)造函數(shù) Array()的不足。因為參數(shù)個數(shù)的不同,會導(dǎo)致 Array()的行為有差異

//如下代碼看出差異
Array.of(3); // [3]
Array.of(3, 11, 8); // [3,11,8]

new Array(3); // [, , ,]
new Array(3, 11, 8); // [3, 11, 8]

// Array.of方法可以用下面的代碼模擬實現(xiàn)。

function ArrayOf() {
  return [].slice.call(arguments);
}

3、數(shù)組實例的 find() 和 findIndex()

find()

返回第一個符合條件的數(shù)組成員,它的參數(shù)是一個回調(diào)函數(shù),所有數(shù)組成員依次執(zhí)行該函數(shù),直到找出第一個滿足條件的成員,然后返回該成員,如果沒有符合條件的成員,則返回undefined

該方法的回調(diào)函數(shù)接收三個參數(shù): 當(dāng)前的值 , 當(dāng)前位置, 原數(shù)組

示例1

[1,12,4,0,5].find((item,index , arr) => return item < 1)   // 0

示例2

// find()
var item = [1, 4, -5, 10].find(n => n < 0);
console.log(item); // -5
// find 也支持這種復(fù)雜的查找
var points = [
  {
    x: 10,
    y: 20
  },
  {
    x: 20,
    y: 30
  },
  {
    x: 30,
    y: 40
  },
  {
    x: 40,
    y: 50
  },
  {
    x: 50,
    y: 60
  }
];
points.find(function matcher(point) {
  return point.x % 3 == 0 && point.y % 4 == 0;
}); // { x: 30, y: 40 }

findIndex()

寫法用法基本與find()方法相同,只是返回第一個符合條件的數(shù)組成員的位置,如果沒有則返回-1

示例1

[1,2,4,15,0].findIndex((item , index ,arr) => return item > 10)   //3

示例2

var points = [
  {
    x: 10,
    y: 20
  },
  {
    x: 20,
    y: 30
  },
  {
    x: 30,
    y: 40
  },
  {
    x: 40,
    y: 50
  },
  {
    x: 50,
    y: 60
  }
];
points.findIndex(function matcher(point) {
  return point.x % 3 == 0 && point.y % 4 == 0;
}); // 2
points.findIndex(function matcher(point) {
  return point.x % 6 == 0 && point.y % 7 == 0;
}); //1

4、數(shù)組實例的 fill()

  • fill()方法使用給定值, 填充一個數(shù)組

  • fill 方法還可以接受第二個和第三個參數(shù),用于指定填充的起始位置和結(jié)束位置

// fill方法使用給定值, 填充一個數(shù)組。
var fillArray = new Array(6).fill(1);
console.log(fillArray); //[1, 1, 1, 1, 1, 1]
//fill方法還可以接受第二個和第三個參數(shù),用于指定填充的起始位置和結(jié)束位置。
["a", "b", "c"].fill(7, 1, 2);
// ['a', 7, 'c']
// 注意,如果填充的類型為對象,那么被賦值的是同一個內(nèi)存地址的對象,而不是深拷貝對象。
let arr = new Array(3).fill({
  name: "Mike"
});
arr[0].name = "Ben";
console.log(arr);
// [{name: "Ben"}, {name: "Ben"}, {name: "Ben"}]

這兩個方法都可以發(fā)現(xiàn)數(shù)組中的NaN,而ES5中的indexOf()是發(fā)現(xiàn)不了NaN的

5、數(shù)組實例的 entries(),keys() 和 values()

三個方法都用來遍歷數(shù)組,都返回一個遍歷器對象,可用for…of循環(huán)遍歷

不同的是:

  • keys()是對鍵名的遍歷

  • values()是對鍵值的遍歷

  • entries()是對鍵值對的遍歷

for (let index of ["a", "b"].keys()) {
  console.log(index);
}
// 0 1
for (let elem of ["a", "b"].values()) {
  console.log(elem);
}
// a b
for (let [index, elem] of ["a", "b"].entries()) {
  console.log(index, elem);
}
// 0 "a"
// 1 "b"
var a = [1, 2, 3];
[...a.values()]; // [1,2,3]
[...a.keys()]; // [0,1,2]
[...a.entries()]; // [ [0,1], [1,2], [2,3] ]

6、includes()方法返回一個布爾值

該方法返回一個布爾值,表示某個數(shù)組中是否包含給定的值

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

還可接收第二個參數(shù),表示搜索的起始位置,默認(rèn)是0。如果第二個參數(shù)是負(fù)數(shù),則表示到數(shù)的位置。如果第二個參數(shù)大于數(shù)組的長度,則從下標(biāo)0處開始

includes 方法彌補(bǔ)了 indexOf 方法不夠語義化和誤判 NaN 的缺點

[1,23,NaN].includes(NaN)   //true

兼容方法:

function contains = ( () => {
    Array.prototype.includes
    	?(arr , val) => arr.includes(val)
    	:(arr , val) => arr.some(item => return item === val)
})()

7、數(shù)組實例的 flat(),flatMap()

  • flat()用于將嵌套的數(shù)組“拉平”,變成一維的數(shù)組。該方法返回一個新數(shù)組,對原數(shù)據(jù)沒有影響。傳參數(shù)代表拉平幾層默認(rèn)是一層

  • flatMap()只能展開一層數(shù)組。方法對原數(shù)組的每個成員執(zhí)行一個函數(shù)(相當(dāng)于執(zhí)行 Array.prototype.map()),然后對返回值組成的數(shù)組執(zhí)行 flat()方法。該方法返回一個新數(shù)組,不改變原數(shù)組

  // flat()
  [1, 2, [3, [4, 5]]].flat()
  // [1, 2, 3, [4, 5]]
  [1, 2, [3, [4, 5]]].flat(2)
  // [1, 2, 3, 4, 5]
  //flatMap()
  [2, 3, 4].flatMap((x) => [x, x * 2])
  //map執(zhí)行完后是[[2, 4], [3, 6], [4, 8]]
  //然后在執(zhí)行flat()方法得到下邊的結(jié)果
  // [2, 4, 3, 6, 4, 8]
  // flatMap()只能展開一層數(shù)組。
  // 相當(dāng)于 .flat()
  [1, 2, 3, 4].flatMap(x => [
    [x * 2]
  ])
  //map執(zhí)行完后是[[[2]], [[4]], [[6]], [[8]]]
  //然后在執(zhí)行flat()方法得到如下結(jié)果
  // [[2], [4], [6], [8]]復(fù)制代碼

8、數(shù)組實例的copywithin()

在當(dāng)前數(shù)組內(nèi)部將指定位置的成員復(fù)制到其他位置,然后返回當(dāng)前數(shù)組,會改變原數(shù)組

接收三個參數(shù):

1、target(必需) 從該位置開始替換數(shù)據(jù)

2、start(可選) 從該位置開始讀取數(shù)據(jù),默認(rèn)為0,如果為負(fù)數(shù),則表示到數(shù)

3、end(可選) 到該位置前停止讀取數(shù)據(jù),默認(rèn)等于數(shù)組長度。如果是負(fù)數(shù),表示到數(shù)

三個參數(shù)都應(yīng)該是數(shù)字,如果不是,會自動轉(zhuǎn)為數(shù)值

[1,2,3,4,5].copywithin(0,3);  //[4,5,3,4,5]  表示從下標(biāo)3位置直到結(jié)束的成員(4,5),復(fù)制到從下標(biāo)0開始的位置,結(jié)果替換掉了原來的1和2

關(guān)于“es6新增的數(shù)組方法有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

網(wǎng)站欄目:es6新增的數(shù)組方法有哪些
文章網(wǎng)址:http://jinyejixie.com/article8/jojjip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)網(wǎng)站內(nèi)鏈、網(wǎng)站維護(hù)、標(biāo)簽優(yōu)化、定制開發(fā)、App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
民县| 奉化市| 麻江县| 衡水市| 徐闻县| 新源县| 同德县| 灵宝市| 萨嘎县| 武隆县| 眉山市| 夏邑县| 张家口市| 萝北县| 辛集市| 民乐县| 定结县| 博兴县| 玛多县| 蚌埠市| 都兰县| 武夷山市| 印江| 昌乐县| 金塔县| 青田县| 秭归县| 冕宁县| 临猗县| 长海县| 洞头县| 平度市| 北流市| 内江市| 毕节市| 永平县| 麻栗坡县| 黑河市| 凌源市| 江陵县| 铁力市|