分享干货ECMAScript 2015(ES6)提示和技巧非常有用

发布时间:2018-11-13 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了分享干货ECMAScript 2015(ES6)提示和技巧非常有用脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

ecmascript 2015(又名ES6)已经存在了几年,可以巧妙地使用各种新功能。我想列出并讨论其中一些,因为我认为你会发现它们很有用。

如果您知道其他提示,请在评论中告诉我,我很乐意添加它们。

1.执行所需参数

ES6提供了默认参数值,允许您设置在没有该参数的情况下调用函数时要使用的默认值。

在以下示例中,我们将required()函数设置为两者ab参数的默认值。这意味着如果其中一个ab未被传递,required()则调用该函数并且您将收到错误。

const required =()=> {throw new Error('Missing parameter')};
//如果缺少“a”或“b”,则下面的函数将抛出错误。
const add =(a = required(),b = required())=> a + b;
add(1,2)// 3 
add(1)//错误:缺少参数。

强大的“减少”

Array引导方法非常通用。它通常用于将项目数组转换为单个值。但是你可以用它做更多的事情。

提示:大多数这些技巧都依赖于初始值是一个数组或一个对象,而不是像字符串或变量这样的简单值。

2.1使用reduce同时执行map和filter * *

假设您有一个项目列表的情况,并且您想要更新每个项目(即地图),然后只过滤几个项目(即过滤器)。但这意味着您需要两次运行列表!

在下面的例子中,我们想要将数组中的项的值加倍,然后只选择那些大于50的项。注意我们如何使用强大的reduce方法来加倍(映射)然后过滤?这非常有效。

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]

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

如果仔细查看上面的示例(从2.1开始),您就会知道reduce可用于过滤或映射项目!

2.3使用reduce来平衡括号

这是还原功能多样化的另一个例子。给定一个带括号的字符串,我们想知道它们是否是平衡的,即有相同数量的“(”和“)”,如果“(”在“之前”)。

我们可以轻松地在reduce中执行此操作,如下所示。我们只是保持一个counter起始值为0 的变量。如果我们击中(并计数下来,我们会计数) 。如果它们是平衡的,那么我们应该最终得到0

const isParensBalanced =(str)=> { 
  return str.splIT('')。reduce((counter,char)=> { 
    if(counter <0){// matched“)”before“(” 
      return counter; 
    } else if(char ==='('){ 
      return ++ counter; 
    } else if(char ===')'){ 
      return --counter; 
    } else {//匹配其他一些char 
      返回计数器; 
    } 
    
  },0); // < - 计数器的起始值
}
isParensBalanced('(())')// 0 < -  balanced 
isParensBalanced('(asDFds)')// 0 < - 平衡
isParensBalanced('(()')// 1 < - 不平衡
isParensBalanced(')(')// -1 < - 不平衡

2.4计算重复的数组项(转换数组→对象)

有时您想要计算重复的数组项或将数组转换为对象。你可以使用reduce。

在下面的示例中,我们想要计算每种类型的汽车数量,并将此数字放入一个对象中。

VAR cars = [''宝马','奔驰','奔驰','特斯拉','宝马','丰田'];
var carsObj = cars.reduce(function(obj,name){ 
   obj [name] = obj [name]?++ obj [name]:1; 
  return obj; 
},{});
carsObj; // => {宝马:2,奔驰:2,特斯拉:1,丰田:1}
&nbsp;

3.对象解构

3.1删除不需要的属性

有时您想要删除不需要的属性 - 可能是因为它们包含敏感信息或者太大。我们可以简单地将这些道具提取到变量中,并将有用的道具保存在* rest *参数中,而不是迭代整个对象来移除它们。

在下面的示例中,我们要删除_internaltooBig 属性。我们可以将它们分配到_internaltooBig变量,其余存放*休息*参数cleanObject,我们可以使用更高版本。

let {_internal, tooBig, ...cleanObject} = {el1: '1', _internal:"secret", tooBig:{}, el2: '2', el3: '3'};
console.LOG(cleanObject); // {el1: '1', el2: '2', el3: '3'}

3.2在函数参数中构造嵌套对象

在下面的示例中,该engine属性是对象的嵌套car对象。如果我们对该vin属性感兴趣engine,我们可以轻松地对其进行解构,如下所示。

 

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带有一个扩展运算符(用三个点表示)。它通常用于解构数组值,但您也可以在对象上使用它。

在下面的示例中,我们使用sPRead运算符在新对象中进行传播。第二个对象中的属性键将覆盖第一个对象中的属性键。

在下面的示例中,属性键b and cobject2那些从覆盖object1

let object1 = {a:1,b:2,c:3} 
let object2 = {b:30,c:40,d:50} 
let merged = {... object1,... object2} //展开并重新加入合并的
console.log(合并)//  {a:1,b:30,c:40,d:50}
 

4.1使用集合重复数

在ES6中,您可以使用集合轻松地对项目进行重复数据删除,因为集合仅允许存储唯一值。
let arr = [1,1,2,2,3,3]; 
let deduPEd = [... new Set(arr)] // [1,2,3]

4.2使用Array方法

将集转换为数组就像使用扩展运算符()一样简单。您也可以在Sets上轻松使用所有Array方法!

假设我们有一个如下所示的集合,我们希望filter它只包含大于3的项目。

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

5.数组解构

很多时候,您的函数可能会返回数组中的多个值。我们可以通过使用数组解构来轻松获取它们。

5.1交换价值

let param1 = 1;
let param2 = 2;
//swap and assign param1 & param2 each others values
[param1, param2] = [param2, param1];
console.log(param1)// 2 
console.log(param2)// 1

5.2从函数接收和分配多个值

在下面的示例中,我们正在获取帖子/post和相关评论/comments 。由于我们正在使用async / await ,该函数将结果返回到数组中。使用数组解构,我们可以简单地将结果直接分配给相应的变量。

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

希望这篇文章很有帮助!如果你喜欢它,请给我一些鼓掌,让更多的人看到它。谢谢!

觉得可用,就经常来吧!es6教程 脚本宝典 欢迎评论哦!巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的分享干货ECMAScript 2015(ES6)提示和技巧非常有用全部内容,希望文章能够帮你解决分享干货ECMAScript 2015(ES6)提示和技巧非常有用所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。