ES6學(xué)習(xí)

1嘴瓤、Array.prototype.includes()方法

includes() 方法用來(lái)判斷一個(gè)數(shù)組是否包含一個(gè)指定的值,根據(jù)情況益眉,如果包含則返回 true,否則返回false。

var array = [1, 2, 3];

console.log(array.includes(2));
// expected output: true

var pets = ['cat', 'dog', 'bat'];

console.log(pets.includes('cat'));
// expected output: true

console.log(pets.includes('at'));
// expected output: false

Array.prototype.includes()方法接收兩個(gè)參數(shù):

要搜索的值
搜索的開(kāi)始索引绑嘹。

當(dāng)?shù)诙€(gè)參數(shù)被傳入時(shí),該方法會(huì)從索引處開(kāi)始往后搜索(默認(rèn)索引值為0)疾呻。若搜索值在數(shù)組中存在則返回true,否則返回false写半。 且看下面示例:

['a', 'b', 'c', 'd'].includes('b')         // true
['a', 'b', 'c', 'd'].includes('b', 1)      // true
['a', 'b', 'c', 'd'].includes('b', 2)      // false

乍一看岸蜗,includes的作用跟數(shù)組的indexOf重疊,為什么要特意增加這么一個(gè)api呢叠蝇?主要區(qū)別有以下幾點(diǎn):

1璃岳、返回值』诖罚看一個(gè)函數(shù)铃慷,先看他們的返回值。indexOf的返回?cái)?shù)是值型的蜕该,includes的返回值是布爾型犁柜,所以在if條件判斷的時(shí)候includes要簡(jiǎn)單得多,而indexOf 需要多寫(xiě)一個(gè)條件進(jìn)行判斷堂淡。

var ary = [1];
if (ary.indexOf(1) !== -1) {
    console.log("數(shù)組存在1")
}
if (ary.includes(1)) {
    console.log("數(shù)組存在1")
}

2馋缅、NaN的判斷。如果數(shù)組中有NaN绢淀,你又正好需要判斷數(shù)組是否有存在NaN萤悴,這時(shí)你使用indexOf是無(wú)法判斷的,你必須使用includes這個(gè)方法皆的。

var ary1 = [NaN];
console.log(ary1.indexOf(NaN))//-1
console.log(ary1.includes(NaN))//true

3覆履、當(dāng)數(shù)組的有空的值的時(shí)候,includes會(huì)認(rèn)為空的值是undefined祭务,而indexOf不會(huì)内狗。

var ary1 = new Array(3);
console.log(ary1.indexOf(undefined));//-1
console.log(ary1.includes(undefined))//true

2、求冪運(yùn)算符(**)

加/減法我們通常都是用其中綴形式义锥,直觀易懂柳沙。在ECMAScript2016中,我們可以使用**來(lái)替代Math.pow拌倍。

4 ** 3           // 64

效果等同于

Math.pow(4,3)

值得一提的是赂鲤,作為中綴運(yùn)算符,**還支持以下操作

let n = 4;
n **= 3;
// 64

3柱恤、Object.values and Object.entries

Object.values() 方法返回一個(gè)給定對(duì)象自己的所有可枚舉屬性值的數(shù)組数初,值的順序與使用for...in循環(huán)的順序相同 ( 區(qū)別在于for-in循環(huán)枚舉原型鏈中的屬性 )。
obj參數(shù)是需要待操作的對(duì)象梗顺∨莺ⅲ可以是一個(gè)對(duì)象,或者一個(gè)數(shù)組(是一個(gè)帶有數(shù)字下標(biāo)的對(duì)象寺谤,[10,20,30] -> {0: 10,1: 20,2: 30})仑鸥。

const obj = { x: 'xxx', y: 1 };
Object.values(obj); // ['xxx', 1]

const obj = ['e', 's', '8']; // 相當(dāng)于 { 0: 'e', 1: 's', 2: '8' };
Object.values(obj); // ['e', 's', '8']

// 當(dāng)我們使用數(shù)字鍵值時(shí)吮播,返回的是數(shù)字排序
// 根據(jù)鍵值排序

const obj = { 10: 'xxx', 1: 'yyy', 3: 'zzz' };
Object.values(obj); // ['yyy', 'zzz', 'xxx']

Object.values('es8'); // ['e', 's', '8']

Object.entries 方法返回一個(gè)給定對(duì)象自身可遍歷屬性 [key, value] 的數(shù)組, 排序規(guī)則和 Object.values 一樣眼俊。這個(gè)方法的聲明比較瑣碎:

const obj = { x: 'xxx', y: 1 };
Object.entries(obj); // [['x', 'xxx'], ['y', 1]]

const obj = ['e', 's', '8'];
Object.entries(obj); // [['0', 'e'], ['1', 's'], ['2', '8']]

const obj = { 10: 'xxx', 1: 'yyy', 3: 'zzz' };
Object.entries(obj); // [['1', 'yyy'], ['3', 'zzz'], ['10': 'xxx']]

Object.entries('es8'); // [['0', 'e'], ['1', 's'], ['2', '8']]

4意狠、String padding

為 String 對(duì)象增加了 2 個(gè)函數(shù):padStart 和 padEnd。
像它們名字那樣疮胖,這幾個(gè)函數(shù)的主要目的就是填補(bǔ)字符串的首部和尾部环戈,為了使得到的結(jié)果字符串的長(zhǎng)度能達(dá)到給定的長(zhǎng)度。你可以通過(guò)特定的字符澎灸,或者字符串院塞,或者默認(rèn)的空格填充它。下面是函數(shù)的聲明:

str.padStart(targetLength [, padString])
str.padEnd(targetLength [, padString])

這些函數(shù)的第一個(gè)參數(shù)是 targetLength(目標(biāo)長(zhǎng)度)击孩,這個(gè)是結(jié)果字符串的長(zhǎng)度迫悠。第二個(gè)參數(shù)是可選的 padString(填充字符)鹏漆,一個(gè)用于填充到源字符串的字符串巩梢。默認(rèn)值是空格。

'es8'.padStart(2);          // 'es8'
'es8'.padStart(5);          // '  es8'
'es8'.padStart(6, 'woof');  // 'wooes8'
'es8'.padStart(14, 'wow');  // 'wowwowwowwoes8'
'es8'.padStart(7, '0');     // '0000es8'

'es8'.padEnd(2);            // 'es8'
'es8'.padEnd(5);            // 'es8  '
'es8'.padEnd(6, 'woof');    // 'es8woo'
'es8'.padEnd(14, 'wow');    // 'es8wowwowwowwo'
'es8'.padEnd(7, '6');       // 'es86666'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末艺玲,一起剝皮案震驚了整個(gè)濱河市括蝠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饭聚,老刑警劉巖忌警,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異秒梳,居然都是意外死亡法绵,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)酪碘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)朋譬,“玉大人,你說(shuō)我怎么就攤上這事兴垦♂阌” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵探越,是天一觀的道長(zhǎng)狡赐。 經(jīng)常有香客問(wèn)我,道長(zhǎng)钦幔,這世上最難降的妖魔是什么枕屉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮鲤氢,結(jié)果婚禮上搀擂,老公的妹妹穿的比我還像新娘拐纱。我一直安慰自己,他們只是感情好哥倔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布秸架。 她就那樣靜靜地躺著,像睡著了一般咆蒿。 火紅的嫁衣襯著肌膚如雪东抹。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天沃测,我揣著相機(jī)與錄音缭黔,去河邊找鬼。 笑死蒂破,一個(gè)胖子當(dāng)著我的面吹牛馏谨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播附迷,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼惧互,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了喇伯?” 一聲冷哼從身側(cè)響起喊儡,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稻据,沒(méi)想到半個(gè)月后艾猜,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡捻悯,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年匆赃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片今缚。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡算柳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出荚斯,到底是詐尸還是另有隱情埠居,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布事期,位于F島的核電站滥壕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏兽泣。R本人自食惡果不足惜绎橘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧称鳞,春花似錦涮较、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至熙暴,卻和暖如春闺属,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背周霉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工掂器, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俱箱。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓国瓮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親狞谱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乃摹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348