什么是es6?
十年專注成都網(wǎng)站制作,成都企業(yè)網(wǎng)站定制,個人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識、方案,網(wǎng)站設(shè)計流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù),專注于成都企業(yè)網(wǎng)站定制,高端網(wǎng)頁制作,對成都石牌坊等多個領(lǐng)域,擁有多年的網(wǎng)站營銷經(jīng)驗。
在這里不過多闡述,我也是跟著阮一峰大佬的《es6入門 》來學(xué)習(xí)的,es6新增了很多的方法、屬性,讓我們在編碼中得到了很高的提升,在這里只對array這塊進行闡述,其他的就過不多介紹了。
言歸正傳,在項目中,經(jīng)常會遇到處理數(shù)據(jù),篩選數(shù)據(jù)的要求,我們更多的會借助于for循環(huán)來完成,比如:數(shù)組去重,傳統(tǒng)方法如下(以下所有實例只列舉一種)
let a = [1,2,2,3,3,4,5]; let b = [a[0]]; for(let i = 0; i < a.length; i++){ let flag = false; for(let j = 0; j < b.length; j++){ if( a[i] === b[j] ){ flag = true; break; } } if( !flag ){ b.push(a[i]) } } console.log(b) // [1,2,3,4,5]
上面的是es6之前的處理方法,可以解決問題,但代碼量可著實不少??!在es6中,只需要一行代碼就可以搞定!
Array.from && newSet()
let a = [1,2,2,3,3,4,5]; let b = Array.from(new Set(a)) console.log(b) // [1,2,3,4,5]
是不是及其簡單!其中 new Set()會把重復(fù)的數(shù)據(jù)過濾到,得到一個類數(shù)組的對象,Array.from()可以把類數(shù)組的對象轉(zhuǎn)換為真正的數(shù)組對象,有興趣的同學(xué)可以對這兩個屬性進行更加深入的了解。
數(shù)組過濾
在我們拿到后端數(shù)據(jù)的時候,可能會對數(shù)據(jù)進行一些篩選、過濾,傳統(tǒng)的做法如下
// 取出數(shù)組中name為kele的數(shù)組集合 let a = [ { name: 'kele', title: '可口可樂' }, { name: 'kele', title: '芬達' }, { name: 'wlg', title: '王老吉' } ] let b = []; for(let i = 0; i < a.length; i++){ if( a[i].name === 'kele' ){ b.push(a[i]) } } console.log(b) //[{name: 'kele', title: '可口可樂'},{name: 'kele', title: '芬達'}]
es6中的處理方法如下
Array.filter(callback)
let a = [ { name: 'kele', title: '可口可樂' }, { name: 'kele', title: '芬達' }, { name: 'wlg', title: '王老吉' } ] let b = a.filter(item => item.name === 'kele'); console.log(b) //[{name: 'kele', title: '可口可樂'},{name: 'kele', title: '芬達'}]
同樣的,Array.filter()讓我們擺脫了for循環(huán),代碼看起來更加的清爽!
Array.every(callback)
這個方法主要是判斷數(shù)組中所有的元素都符合條件時,返回true
let a = [1,2,3,4,5]; let b = a.every(item => item > 2); console.log(b) // false
Array.some(callback)
這個方法和上一個略有區(qū)別,這個方法主要判斷數(shù)組中有一個元素符合條件,就返回true
let a = [1,2,3,4,5]; let b = a.some(item => item > 2); console.log(b) // true
Array.find(callback)
這個方法是返回數(shù)組中符合條件的第一個元素,否則就返回undefined
let a = [1,2,3,4,5]; let b = a.find(item => item > 2); console.log(b) // 3
Array.findIndex(callback)
這個方法是返回數(shù)組中符合條件的第一個元素的索引值,否則就返回-1
let a = [1,2,3,4,5]; let b = a.findIndex(item => item > 2); console.log(b) // 2 符合條件的為元素3 它的索引為2
Array.includes(item, finIndex)
這個方法是判斷數(shù)組中是否包含有指定的值,包含就返回true,否則就是false,它接受兩個參數(shù),第一個為搜索的值(必填),第二個為搜索開始的位置(選填,默認從0開始)
let a = [1,2,3,4,5]; let b = a.includes(2); console.log(b) // true
Array.map(callback)
這個方法是返回一個根據(jù)你callback函數(shù)中的條件,返回一個全新的數(shù)組
let a = [1,2,3,4,5]; let b = a.map(item => item * 2); console.log(b) // [2,4,6,8,10]
Array.reduce(callback)
這個方法是根據(jù)callback中的條件對數(shù)組中的每個元素都進行類加的操作,返回一個全新的值,下面做兩個不同的例子,便于理解
/** 第一種 **/ let a = [1,2,3]; let b = a.reduce((i, j) => { return i + j; }, 0); console.log(b) // b /** 第二種 **/ let a = [1,2,3]; let b = a.reduce((i,j) => { i.push(j) return i },[0]) console.log(b) // [0,1,2,3]
...擴展運算符
這個可以很方便的幫我們實現(xiàn)合并兩個數(shù)組
let a = [1,2,3]; let b = [4,5,6]; let c = [...a,...b]; console.log(c) // [1,2,3,4,5,6];
小結(jié):基本上新增的一些方法用到的就是這些,一些老的方法例如push、shift、sort等等就不一一列舉了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。