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

資訊專欄INFORMATION COLUMN

ECMAScript 2015(ES6)有用的提示與技巧

lwx12525 / 2106人閱讀

摘要:必傳參數(shù)提供了默認(rèn)參數(shù)值,沒有該參數(shù)的情況下調(diào)用函數(shù)時(shí)使用的默認(rèn)值。這意味著如果未傳遞或,則調(diào)用函數(shù),將收到錯(cuò)誤。由于使用,該函數(shù)以數(shù)組的形式返回結(jié)果。使用數(shù)組析構(gòu),我們可以直接將結(jié)果賦值到相應(yīng)的變量中。

想閱讀更多優(yōu)質(zhì)文章請猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你!

EcmaScript 2015(ES6)已經(jīng)出來好幾年了,可以巧妙地使用各種新功能。列出并討論其中一些,你會發(fā)現(xiàn)它們很有用。如果你知道其他好方法,請?jiān)谠u論中回復(fù),共同學(xué)習(xí)。

1.必傳參數(shù)

ES6提供了默認(rèn)參數(shù)值,沒有該參數(shù)的情況下調(diào)用函數(shù)時(shí)使用的默認(rèn)值。

在以下示例中,將required()函數(shù)設(shè)置為 a 和 b 參數(shù)的默認(rèn)值。 這意味著如果未傳遞a或b,則調(diào)用required()函數(shù),將收到錯(cuò)誤。

const required = () => {throw new Error("Missing parameter")};
//The below function will trow an error if either "a" or "b" is missing.
const add = (a = required(), b = required()) => a + b;
add(1, 2) //3
add(1) // Error: Missing parameter.
2.強(qiáng)大的“reduce”

Array的reduce方法非常通用。它通常用于將項(xiàng)目數(shù)組轉(zhuǎn)換為單個(gè)值,但是你可以用它做更多的事情。

大多數(shù)這些技巧都依賴于初始值是數(shù)組或?qū)ο蠖皇窍褡址蜃兞窟@樣的簡單值。
2.1 使用reduce同時(shí)進(jìn)行 map 和 filter 操作

假設(shè)有一個(gè)項(xiàng)目列表的情況,并且想要更新每個(gè)項(xiàng)目(即 Array.map 操作),然后只過濾幾個(gè)項(xiàng)目(即 Array.filter ),這意味著需要兩次循環(huán)遍歷列表!

在下面的示例中,我們希望將數(shù)組中的項(xiàng)的值加倍,然后選擇大于50的項(xiàng)。我們使用強(qiáng)大的 reduce 方法高效的同時(shí)做到:

const numbers = [10, 20, 30, 40];
const doubledOver50 = numbers.reduce((finalList, num) => {
  
  num = num * 2; //double each number (i.e. map)
  
  //filter number > 50
  if (num > 50) {
    finalList.push(num);
  }
  return finalList;
}, []);
doubledOver50; // [60, 80]

2.2 使用 “reduce” 代替是 “map” 或 “filter”

如果仔細(xì)查看上面的示例(2.1),就會知道 reduce 可以代替 map 或 filter !

2.3 使用 reduce 來判斷括號是否對稱

// 返回 0 表示對稱
const isParensBalanced = (str) => {
  return str.split("").reduce((counter, char) => {
    if (counter < 0) { // 匹配到 ")" 在 "(" 前面
      return counter;
    } else if ( char === "(") {
      return ++counter;
    } else if ( char === ")") {
      return --counter;
    } else {
      return counter; //其它字符
    }
  }, 0) // 初始化值為0
}

isParensBalanced("(())") // 0 <---對稱
isParensBalanced("(asdfds") // 0 <---對稱
isParensBalanced("(()") // 1 <---不對稱
isParensBalanced(")(") // 0 <---不對稱

2.4 計(jì)算重復(fù)的數(shù)組項(xiàng)(轉(zhuǎn)換數(shù)組→對象)

有時(shí)你希望復(fù)制數(shù)組項(xiàng)或?qū)?shù)組轉(zhuǎn)換為對象。 你可以使用 reduce。

在下面的例子中,計(jì)算cars 中每個(gè)值重復(fù)數(shù)量,并將這組對應(yīng)的數(shù)據(jù)放到一個(gè)對象中:

var cars = ["BMW","Benz", "Benz", "Tesla", "BMW", "Toyota"];
var carsObj = cars.reduce(function (obj, name) { 
   obj[name] = obj[name] ? ++obj[name] : 1;
  return obj;
}, {});
carsObj; // => { BMW: 2, Benz: 2, Tesla: 1, Toyota: 1 }

reduce 還可以做更多的事情,建閱讀 MDN上列出的示例。

3. 對象解構(gòu) 3.1 屬性挑揀

有時(shí)候你想挑揀需要的屬性排除一些平需要的屬性(可能是因?yàn)樗鼈儼舾行畔⒒蛘咛罅耍N覀儾恍枰闅v整個(gè)對象來挑揀它們,只需將這些不需要的數(shù)據(jù)提取到對應(yīng)變量中,并將有用的保存在rest參數(shù)中。

在下面的示例中,我們不需要的屬性如_internal和tooBig屬性,我們可以將它們分配給_internal和tooBig變量(名字要一樣),并將剩余的保存到在 rest parameter cleanObject 參數(shù)中:

let {_internal, tooBig, ...cleanObject} = {el1: "1", _internal:"secret", tooBig:{}, el2: "2", el3: "3"};
console.log(cleanObject); // {el1: "1", el2: "2", el3: "3"}
3.2 在函數(shù)參數(shù)中分解嵌套對象

在下面的示例中,engine 屬性是 car 對象的一個(gè)內(nèi)嵌對象。如果我們想獲取 engine 中的 vin 值,可以使用以下解構(gòu)方式:

var car = {
  model: "bmw 2018",
  engine: {
    v6: true,
    turbo: true,
    vin: 12345
  }
}
const modelAndVIN = ({model, engine: {vin}}) => {
  console.log(`model: ${model} vin: ${vin}`);
}
modelAndVIN(car); // => model: bmw 2018  vin: 12345

3.3 合并對象

ES6附帶了一個(gè)擴(kuò)展操作符(由三個(gè)點(diǎn)表示)。它通常用于解構(gòu)數(shù)組值,但也可以在對象上使用它。

在下面的示例中,我們使用擴(kuò)展操作符(...)在新對象中進(jìn)行擴(kuò)展。第二個(gè)對象中的屬性鍵將覆蓋第一個(gè)對象中的屬性鍵:

let object1 = { a:1, b:2,c:3 }
let object2 = { b:30, c:40, d:50}
let merged = {…object1, …object2} //spread and re-add into merged
console.log(merged) // {a:1, b:30, c:40, d:50}
4.Sets 4.1 使用 set 時(shí)行數(shù)組去重

在ES6中,可以使用 set 輕松時(shí)行數(shù)組去重,因?yàn)?set 只允許存儲惟一的值:

let arr = [1, 1, 2, 2, 3, 3];
let deduped = [...new Set(arr)] // [1, 2, 3]

4.2 使用數(shù)組的方法

使用擴(kuò)展運(yùn)算符(...) 將 set 轉(zhuǎn)換為數(shù)組很簡單且在集合上使用所有數(shù)組方法!

let mySet = new Set([1,2, 3, 4, 5]);
var filtered = [...mySet].filter((x) => x > 3) // [4, 5]

5. 數(shù)組解構(gòu) 5.1 交換值

let param1 = 1;
let param2 = 2;

[param1, param2] = [param2, param1];
console.log(param1) // 2
console.log(param2) // 1
5.2 從一個(gè)函數(shù)接收和分配多個(gè)值

在下面的例子中,我們在/post獲取一個(gè)post,并在/comments 獲取相關(guān) comments 。由于使用 async/wait,該函數(shù)以數(shù)組的形式返回結(jié)果。使用數(shù)組析構(gòu),我們可以直接將結(jié)果賦值到相應(yīng)的變量中。

async function getFullPost(){
  return await Promise.all([
    fetch("/post"),
    fetch("/comments")
  ]);
}
const [post, comments] = getFullPost();

原文地址:https://medium.freecodecamp.o...

你的點(diǎn)贊是我持續(xù)分享好東西的動力,歡迎點(diǎn)贊!

交流

干貨系列文章匯總?cè)缦拢X得不錯(cuò)點(diǎn)個(gè)Star,歡迎 加群 互相學(xué)習(xí)。

https://github.com/qq44924588...

我是小智,公眾號「大遷世界」作者,對前端技術(shù)保持學(xué)習(xí)愛好者。我會經(jīng)常分享自己所學(xué)所看的干貨,在進(jìn)階的路上,共勉!

關(guān)注公眾號,后臺回復(fù)福利,即可看到福利,你懂的。

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

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

相關(guān)文章

  • 前端文檔收集

    摘要:系列種優(yōu)化頁面加載速度的方法隨筆分類中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁性能管理詳解 HTML5 ...

    jsbintask 評論0 收藏0
  • 前端文檔收集

    摘要:系列種優(yōu)化頁面加載速度的方法隨筆分類中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁性能管理詳解 HTML5 ...

    muddyway 評論0 收藏0
  • [翻譯]你點(diǎn)ES6技巧,請查收

    摘要:如果你還知道其他一些小技巧,歡迎留言。下面的代碼將統(tǒng)計(jì)每一種車的數(shù)目然后把總數(shù)用一個(gè)對象表示。由于我們使用的是,函數(shù)把返回值放在一個(gè)數(shù)組中。而我們使用數(shù)組解構(gòu)后就可以把返回值直接賦給相應(yīng)的變量。查看更多我翻譯的文章請?jiān)L問項(xiàng)目地址專欄 原文地址:https://medium.freecodecamp.org/check-out-these-useful-ecmascript-2015-e...

    MadPecker 評論0 收藏0
  • Javascript 打包工具

    摘要:所以,打包工具就出現(xiàn)了,它可以幫助做這些繁瑣的工作。打包工具介紹僅介紹款主流的打包工具,,,,以發(fā)布時(shí)間為順序。它定位是模塊打包器,而屬于構(gòu)建工具。而且在其他的打包工具在處理非網(wǎng)頁文件比如等基本還是需要借助它來實(shí)現(xiàn)。 本文當(dāng)時(shí)寫在本地,發(fā)現(xiàn)換電腦很不是方便,在這里記錄下。 前端的打包工具 打包工具可以更好的管理html,css,javascript,使用可以錦上添花,不使用也沒關(guān)系...

    Sleepy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<