6 个让你少写多做的 ES6 技巧

2023-05-16

1. Array.of

关于奇怪的 Array 函数

众所周知,我们可以通过Array函数来做以下事情。

初始化一个指定长度的数组。

设置数组的初始值。

// 1. Initialize an array of the specified length
const array1 = Array(3) // [ , , ]
// 2. Set the initial value of the array
const array2 = Array() // []
const array3 = Array(undefined) // [ undefined ]
const array4 = Array(1, 2, 3) // [ 1, 2, 3 ]

传递给Array函数的参数个数不一样,其功能也不一样。这常常让我感到困惑。

幸运的是,我们可以使用 Array.of 来弥补 Array 的不足。

// it's not initializing an array of length 3
const array1 = Array.of(3) // [ 3 ]
const array2 = Array.of() // []
const array3 = Array.of(undefined) // [ undefined ]
const array4 = Array.of(1, 2, 3) // [ 1, 2, 3 ]

2. Array.from

从方法中,我们可以通过 Array.from 方法将类数组对象、arguments 对象和 NodeList 对象转换为真正的数组。

1).类数组对象

const arrayLike = {
  0: 'fatfish',
  1: 'medium',
  length: 2
}
const array1 = [].slice.call(arrayLike) // ['fatfish', 'medium']
// A more convenient way
const array2 = Array.from(arrayLike) // ['fatfish', 'medium']

2).节点列表

const domsNodeList = document.querySelectorAll('div') 
const domsArray = Array.from(domsNodeList) // [ dom, dom, dom, ... ]

3).Arguments

const logInfo = function () {
  console.log('arguments', arguments)
  console.log('Array.from arguments', Array.from(arguments))
}
logInfo('fatfish', 100)
logInfo('fatfish')

4).Array.from的第二个参数

我们可以像“[].map”一样使用 Array.from 方法。

const array = [ 1, 2, 3 ]
const array2 = array.map((num) => num * 2) // [2, 4, 6]
const array3 = Array.from(array, (num) => num * 2) // [2, 4, 6]

3. includes

我们经常会写这样的判断语句,在满足其中一个条件的情况下做某事。

const num = 1
if (num === 1 || num === 2 || num === 3 || num === 4) {
  console.log(num) // 1
}

其实,可以通过include方法来简化

const nums = [ 1, 2, 3, 4 ]
const num = 1
if (nums.includes(num)) {
  console.log(num) // 1
}

4.使用“at方法”读取数组的尾元素

你如何读取数组的尾部元素?是的,我们需要以“array.length-1”作为下标来读取。

const array = [ 1, 2, 3, 4, 5 ]
const lastEle = array[ array.length - 1 ] // 5
// You can't read like that
const lastEle = array[ - 1 ] // undefined

还有别的办法吗?

是的,“at”方法将成为您的魔法。当然,您可以读取数组中其他位置的元素。

const array = [ 1, 2, 3, 4, 5 ]
const lastEle = array.at(-1) // 5
const ele1 = array.at(0) // 1

5. flat

flat() 方法创建一个新数组,其中所有子数组元素以递归方式连接到指定深度。

const array = [ 1, [ 2, [ 3, [ 4, [ 5 ] ] ] ] ]
// The default depth is 1
const flat1 = array.flat() // [ 1, 2, [ 3, [ 4, [ 5 ] ] ] ]
const flat2 = array.flat(2) // [ 1, 2, 3, [ 4, [ 5 ] ] ]
const flatAll = array.flat(Infinity) // [ 1, 2, 3, 4, 5 ]

6. findIndex

findIndex() 方法返回数组中满足提供的测试函数的第一个元素的索引。否则,它返回 -1,表示没有元素通过测试。”

const array = [ -1, 0, 10, 10,  20, 100 ]
const index1 = array.findIndex((num) => num < 0) // 0
const index2 = array.findIndex((num) => num >= 10) // 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

6 个让你少写多做的 ES6 技巧 的相关文章

  • 深度学习基础入门

    一 神经网络基础 线性函数 xff1a 从输入到输出的映射 损失函数 61 数据损失 43 正则化惩罚项 我们总是希望模型不要太复杂 xff0c 过拟合的模型是没用的 反向传播 加法门单元 xff1a 均等分配MAX门单元 xff1a 给最
  • 正则表达式匹配链接

    http tools jb51 net regex create reg
  • java选手算法竞赛模板

    span class token keyword import span span class token namespace java span class token punctuation span io span class tok
  • Mybatis框架文件模板

    jdbc properties mysql jdbc driver 61 com mysql jdbc Driver jdbc url 61 jdbc mysql 127 0 0 1 3306 mybatis characterEncodi
  • Mybatis单表 | 多表 | 动态sql 查询

    一 xff1a 单表增删改查xml 注 xff1a update不建议这么写sql 文章后有动态sql的写法 xff0c 用到了trim代替了set xff0c 注意ifnull的情况 单表的sql映射 xff0c 没什么好说的 二 xff
  • java版本的c++STL函数之next_permutation()

    相信很多java选手在打比赛的时候会出现手写全排列的时候实现不了字典序最小的下一个排列 xff0c 这里提供一个简简单单的板子 xff0c 欢迎使用 首先创建一个Permutaion的泛型类 span class token keyword
  • springboot定时任务处理(cron表达式)

    自动生成链接 https www bejson com othertools cron
  • List集合和int[]数组实现互转操作

    1 List转int list转int 时需要注意的是 xff0c list里存的是引用数据类型 xff0c 如果是Integer需要拆箱操作 xff0c 即mapToInt i gt i xff0c 不然的话直接toArray 的话jdk
  • docker 容器新建

    先查看ubuntu 镜像版本 xff1a a sudo docker search ubuntu 结果 xff1a wxsc 64 ubuntu usr include x86 64 linux gnu bits sudo docker s
  • APM/PX4将遥控器5通道之后的通道映射到舵机输出

    本文转自模友之吧 xff0c 感谢作者加加菲 xff0c 如有不当之处 xff0c 请联系删帖 xff08 环境 xff1a 飞控pixhawk 标准版 xff0c AC3 2 1固件 xff0c 社区版地面站 xff0c sbus接收机
  • 华为的鸿蒙系统引发嵌入式业界震动?

    笔者跟很多业内人士一样一直以为华为就是搞一个类似安卓的在高性能可移动设备上跑的操作系统 xff0c 没曾想华为甩出下面这张图 又是希望从RTOS到大型操作系统大小通吃 谷歌一开始没想做物联网的 xff0c 首先甩出的是大型操作系统 xff0
  • 王佩丰 Excel 基础24讲 | 学习笔记(全)

    第一讲 xff1a 认识Excel 1 简介 excel能做什么 xff1f 数据存储 数据处理 数据分析 数据呈现 excel界面 补充 xff1a Excel数据分析步骤 提出问题 xff1a 明确自己需要通过数据分析解决什么问题 理解
  • Envoy 中文指南系列:Envoy 介绍

    原文链接 xff1a https fuckcloudnative io envoy handbook docs overview overview 前言 Envoy 是专为大型现代 SOA xff08 面向服务架构 xff09 架构设计的
  • 树莓派最新64位系统安装Pytorch和OpenCV

    树莓派官方最新64位 xff08 aarch64 xff09 系统安装Pytorch和OpenCV 原文地址 一 设置镜像源 armv7l是armhf的衍生 xff0c 而在树莓派中armhf默认是指32位 xff08 我不确定这个说法对不
  • 畅玩树莓派4B(二)树莓派搭建无线路由器(支持5GWIFI)

    畅玩树莓派4B xff08 二 xff09 树莓派搭建无线路由器 xff08 支持5GWIFI xff09 一 工具安装二 网卡配置三 DHCP和DNS配置四 配置转发五 配置hostapd 树莓派4B拥有千兆有线网络和5G无线网络 因此本
  • 畅玩树莓派4B(一)树莓派系统安装和SSH连接

    畅玩树莓派4B xff08 一 xff09 树莓派系统安装和SSH连接 一 前言二 系统和工具下载三 系统烧录四 开启SSH五 扫描树莓派IP 连接 一 前言 树莓派4B拥有非常强大的功能 可以配置无线路由器 小型NAS Windows的K
  • OpenDaylight简介和安装

    目录 摘要 OpenDaylight简介 环境 下载 安装 OpenDaylight dlux的安装和启动 总结 参考文档 摘要 SDN是一种新的网络体系结构 xff0c 使用开放的协议提供集中 可编程的控制和网络设备监控 SDN的核心理念
  • jni开发中 接口为什么要冠extern "C"呢

    android studio jni开发默认是C 43 43 语言的 而且还都是静态注册 C 43 43 为了支持函数重载 xff0c 函数在被C 43 43 编译后在符号库中的名字与C语言的不同 假如某个函数的原型为void f int
  • JS 中的类数组对象如何转换为数组?

    类数组对象是什么 xff1f 类数组对象 xff0c 就是含有 length 属性的对象 xff0c 但这个对象不是数组 通常来说还会有 0 xff5e length 1 的属性 xff0c 结构表现上非常像一个数组 const arrli
  • js实现文字跑马灯效果

    lt doctype html gt lt html gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt meta name 61 34 viewport 34 content 61 34

随机推荐

  • vue 有滚动条 点击拖拽滑动自定义指令

    lt div class 61 34 wrap 34 v flowDrag gt directives flowDrag bind el binding vnode oldNode if binding return el onmoused
  • 微信小程序相互跳转如何携带参数

    wx navigateToMiniProgram 要跳转的小程序的appid appId 39 wx1b125bf4cf709150 39 跳转的目标页面 xff0c 参数可以在另外一个小程序的onLoad中通过options接收 path
  • js删除字符串最后一个字符方法总汇

    需求 xff1a 去掉js字符串末尾的标点符号 比如原字符串 xff1a csdn net 目标字符串 xff1a csdn net 解决方案 xff1a 方法一 xff1a str slice 0 str length 1 方法二 xff
  • Google Analytics | 学习笔记

    一 简介 1 什么是GA xff1f 是谷歌开发的一款分析网页流量的工具 xff0c 可以帮助网站解决数据分析与统计的问题 xff0c 并且将这些数据可视化展现报告出来 xff0c 帮助网站商家更好的分析受众 xff0c 流量等 xff0c
  • vscode 新版解决冲突界面 改回老版

    很多更新了vscode小伙伴发现新版的解决冲突界面很不适应 xff0c 无从下手 xff0c 只需要加一个东西就可以改回老版的样式 在setting json 里添加 34 git mergeEditor 34 false
  • vue3中defineComponent 的作用

    VUE3中 xff0c 新增了 defineComponent xff0c 它并没有实现任何的逻辑 xff0c 只是把接收的 Object 直接返回 xff0c 它的存在是完全让传入的整个对象获得对应的类型 xff0c 它的存在就是完全为了
  • js打印去除浏览器的默认的页眉页脚

    去除打印的页眉页脚 try var hkeyKey var hkeyRoot 61 34 HKEY CURRENT USER 34 var hkehkeyPath 61 34 Software Microsoft Internet Expl
  • 微信小程序如何判断是否已经订阅某条消息

    判断订阅消息是否已经订阅 res subscriptionsSetting itemSettings 返回的是所有订阅消息的对象集合 xff0c 39 accept 39 表示用户同意订阅这条消息 xff0c 39 reject 39 表示
  • js根据当前时间获取当月的1号和最后一号

    js根据当前时间获取当月的1号和最后一号 function getcurentMonth cdate cdate传来的当前的时间 当天 let thatDay 61 34 34 当月第一天 let oneDayTime 61 34 34 当
  • js判断文件上传的类型

    js判断文件上传的类型 64 param fileName 文件名称 64 param 数据返回 1 无后缀匹配 false 64 param 数据返回 2 匹配图片 image 64 param 数据返回 3 匹配 txt txt 64
  • js数据流文件下载

    js数据流文件下载 64 param fileType 文件类型 64 param fileName 文件名称 64 param data 数据流文件 function download fileType bucketName data l
  • vscode 全局搜索时屏蔽node_modules和dist 目录

    打开设置 setting json 在里面添加屏蔽的文件目录即可 快捷打开 方式 ctrl 43 p 搜索 setting json 34 search exclude 34 34 dist 34 true 34 node modules
  • NVM 安装及注意事项

    1 下载 nvm Releases coreybutler nvm windows GitHub win10 下载 nvm setup zip 版本 解压并安装 不要修改默认安装路径 会自动写入系统环境变量 控制台 nvm v 查看是否安装
  • eslint 配置项大全 含中文注释

    34 rules 34 定义对象的set存取器属性时 xff0c 强制定义get 34 accessor pairs 34 2 指定数组的元素之间要以空格隔开 后面 xff0c never参数 xff1a 之前和 之后不能带空格 xff0c
  • Linux 路由配置 route命令 /etc/sysconfig/static-routes

    一 临时添加路由 重启network服务失效 方法一 route命令 frags为路由标志 xff0c 标记当前网络节点的状态 add 增加路由 U Up表示此路由当前为启动状态 del 删除路由 H Host xff0c 表示此网关为一主
  • js生成1到100的数组方法

    生成1到100的数组的一种方法是使用JavaScript的Array from 方法 例如 xff0c 下面的将生成1到100的数组 xff1a const numbers 61 Array from Array 100 keys n 61
  • uniapp如何开启短震动、触感反馈实现

    使用 uni app 开发一款 app xff0c 需求中有一项是点击 触感反馈 xff0c 查阅了 uni app 相关文档 xff0c 发现并没有对应的 api xff0c 最开始尝试用 震动 的方式来模拟 触感反馈 但是感觉效果并不好
  • ES10 中 Object.fromEntries() 怎么用?

    我们知道 Object entries 是将对象转成一个自身可枚举属性的键值对数组 同样 xff0c 我们也可以把键值对数组转成了对象 span class hljs keyword const span keyValuePair 61 s
  • wx.getUserProfile被回收后 小程序 如何获取头像和昵称

    wx getUserProfile被回收后微信小程序无法直接获取微信昵称和头像 xff0c 可以通过新的手段获取方案如下 附代码 js const defaultAvatarUrl 61 39 https mmbiz qpic cn mmb
  • 6 个让你少写多做的 ES6 技巧

    1 Array of 关于奇怪的 Array 函数 众所周知 xff0c 我们可以通过Array函数来做以下事情 初始化一个指定长度的数组 设置数组的初始值 span class hljs comment 1 Initialize an a