ES6常用api

引用阮一峰
掘金社區(qū)


一坚芜、關于取值

取值在程序中非常常見虑稼,比如從對象obj中取值恬涧。
const obj = {
    a:1,
    b:2,
    c:3,
    d:4,
    e:5,
}
吐槽:
const a = obj.a;
const b = obj.b;
const c = obj.c;
const d = obj.d;
const e = obj.e;
或者
const f = obj.a + obj.d;
const g = obj.c + obj.e;
吐槽:“不會用ES6的解構賦值來取值嗎灿里?5行代碼用1行代碼搞定不香嗎忱详?直接用對象名加屬性名去取值骑晶,要是對象名短還好,很長呢刺桃?搞得代碼中到處都是這個對象名粹淋≈豆簦”
改進:
const {a,b,c,d,e} = obj;
const f = a + d;
const g = c + e;
反駁
不是不用ES6的解構賦值避凝,而是服務端返回的數(shù)據(jù)對象中的屬性名不是我想要的,這樣取值蹂析,不是還得重新創(chuàng)建個遍歷賦值葛碧。
吐槽
看來你對ES6的解構賦值掌握的還是不夠徹底借杰。如果想創(chuàng)建的變量名和對象的屬性名不一致,可以這么寫:
const {a:a1} = obj;
console.log(a1);// 1
補充
ES6的解構賦值雖然好用进泼。但是要注意解構的對象不能為undefined蔗衡、null。否則會報錯乳绕,故要給被解構的對象一個默認值绞惦。
const {a,b,c,d,e} = obj || {};


二、關于合并數(shù)據(jù)的

比如合并兩個數(shù)組刷袍,合并兩個對象。
const a = [1,2,3];
const b = [1,5,6];
const c = a.concat(b);//[1,2,3,1,5,6]

const obj1 = {
  a:1,
}
const obj2 = {
  b:1,
}
const obj = Object.assign({}, obj1, obj2);//{a:1,b:1}
吐槽
ES6的擴展運算符是不是忘記了樊展,還有數(shù)組的合并不考慮去重嗎呻纹?
改進
const a = [1,2,3];
const b = [1,5,6];
const c = [...new Set([...a,...b])];//[1,2,3,5,6]

const obj1 = {
  a:1,
}
const obj2 = {
  b:1,
}
const obj = {...obj1,...obj2};//{a:1,b:1}

三、關于拼接字符串

const name = '小明';
const score = 59;
let result = '';
if(score > 60){
  result = `${name}的考試成績及格`; 
}else{
  result = `${name}的考試成績不及格`; 
}
吐槽
像你們這樣用ES6字符串模板专缠,還不如不用雷酪,你們根本不清楚在${}中可以做什么操作。在${}中可以放入任意的JavaScript表達式涝婉,可以進行運算哥力,以及引用對象屬性。
改進
const name = '小明';
const score = 59;
const result = `${name}${score > 60?'的考試成績及格':'的考試成績不及格'}`;


四墩弯、關于if中判斷條件

if(
    type == 1 ||
    type == 2 ||
    type == 3 ||
    type == 4 ||
){
   //...
}
吐槽
ES6中數(shù)組實例方法includes會不會使用呢吩跋?
改進
const condition = [1,2,3,4];

if( condition.includes(type) ){
   //...
}

五、關于列表搜索的

在項目中渔工,一些沒分頁的列表的搜索功能由前端來實現(xiàn)锌钮,搜索一般分為精確搜索和模糊搜索。搜索也要叫過濾引矩,一般用filter來實現(xiàn)梁丘。
const a = [1,2,3,4,5];
const result = a.filter( 
  item =>{
    return item === 3
  }
)

吐槽
如果是精確搜索不會用ES6中的find嗎侵浸?性能優(yōu)化懂么,find方法中找到符合條件的項氛谜,就不會繼續(xù)遍歷數(shù)組掏觉。
改進
const a = [1,2,3,4,5];
const result = a.find( 
  item =>{
    return item === 3
  }
)

六、關于扁平化數(shù)組的

一個部門JSON數(shù)據(jù)中值漫,屬性名是部門id澳腹,屬性值是個部門成員id數(shù)組集合,現(xiàn)在要把有部門的成員id都提取到一個數(shù)組集合中惭嚣。
const deps = {
'采購部':[1,2,3],
'人事部':[5,8,12],
'行政部':[5,14,79],
'運輸部':[3,64,105],
}
let member = [];
for (let item in deps){
    const value = deps[item];
    if(Array.isArray(value)){
        member = [...member,...value]
    }
}
member = [...new Set(member)]

吐槽
獲取對象的全部屬性值還要遍歷嗎遵湖?Object.values忘記了嗎?還有涉及到數(shù)組的扁平化處理晚吞,為啥不用ES6提供的flat方法呢延旧,還好這次的數(shù)組的深度最多只到2維,還要是遇到4維槽地、5維深度的數(shù)組迁沫,是不是得循環(huán)嵌套循環(huán)來扁平化?
改進
const deps = {
    '采購部':[1,2,3],
    '人事部':[5,8,12],
    '行政部':[5,14,79],
    '運輸部':[3,64,105],
}
let member = Object.values(deps).flat(Infinity);
其中使用Infinity作為flat的參數(shù)捌蚊,使得無需知道被扁平化的數(shù)組的維度集畅。
補充
flat方法不支持IE瀏覽器。
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缅糟,一起剝皮案震驚了整個濱河市挺智,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窗宦,老刑警劉巖赦颇,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赴涵,居然都是意外死亡媒怯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進店門髓窜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扇苞,“玉大人,你說我怎么就攤上這事寄纵”罘螅” “怎么了?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵程拭,是天一觀的道長哄陶。 經(jīng)常有香客問我,道長哺壶,這世上最難降的妖魔是什么屋吨? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任蜒谤,我火速辦了婚禮,結果婚禮上至扰,老公的妹妹穿的比我還像新娘鳍徽。我一直安慰自己,他們只是感情好敢课,可當我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布阶祭。 她就那樣靜靜地躺著,像睡著了一般直秆。 火紅的嫁衣襯著肌膚如雪濒募。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天圾结,我揣著相機與錄音瑰剃,去河邊找鬼。 笑死筝野,一個胖子當著我的面吹牛晌姚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播歇竟,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼挥唠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了焕议?” 一聲冷哼從身側響起宝磨,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盅安,沒想到半個月后唤锉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡宽堆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年腌紧,在試婚紗的時候發(fā)現(xiàn)自己被綠了茸习。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片畜隶。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖号胚,靈堂內(nèi)的尸體忽然破棺而出籽慢,到底是詐尸還是另有隱情,我是刑警寧澤猫胁,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布箱亿,位于F島的核電站,受9級特大地震影響弃秆,放射性物質發(fā)生泄漏届惋。R本人自食惡果不足惜髓帽,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脑豹。 院中可真熱鬧郑藏,春花似錦、人聲如沸瘩欺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俱饿。三九已至歌粥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拍埠,已是汗流浹背失驶。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留械拍,地道東北人突勇。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像坷虑,于是被迫代替她去往敵國和親甲馋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容

  • axios和ajax的區(qū)別 axios是通過promise實現(xiàn)對ajax技術的一種封裝axios可以運行nodej...
    yimi珊閱讀 289評論 0 0
  • 歡迎訪問我的博客https://qqqww.com/迄损,祝碼農(nóng)同胞們早日走上人生巔峰定躏,迎娶白富美~~~ 由于沒寫目錄...
    這里王工頭閱讀 414評論 0 0
  • 前言: 基于vue 2+ 寫一份知識總結,可以說是學習筆記 目錄: 一芹敌、vue實例的基本結構二痊远、vue事件處理、綁...
    下一機閱讀 6,169評論 3 27
  • 變量ES6新增let變量氏捞,用來聲明變量碧聪,用法類似于var,只是聲明的變量只在let命令所在的代碼塊內(nèi)有效例1:fo...
    shenjianbo閱讀 2,568評論 0 6
  • Object.assign() 方法用于將所有可枚舉屬性的值從一個或多個源對象復制到目標對象液茎。它將返回目標對象逞姿。 ...
    壹點微塵閱讀 2,639評論 0 9