首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ECMAScript 2019(ES10)新特性简介

简介 ES10是ECMA协会在2019年6月发行的一个版本,因为是ECMAScript的第十个版本,所以也称为ES10. 今天我们讲解一下ES10的新特性。...Array的新方法flat和flatMap 在ES10中,给Array引入了两个新的方法,分别是flat和flatMap。 先来看一下flat。...我们看一下 Array.prototype.flat() 的定义: .flat(depth = 1): any[] flat的作用是将Array中的Array中的内容取出来,放到最顶层Array中。...我们再看一下Array.prototype.flatMap()的定义: .flatMap( callback: (value: T, index: number, array: T[]) =...我们知道在Unicode编码中,U+D800到U+DFFF的这些字符是预留给UTF-16使用,如果我们输入的是这个范围内的字符的话,是无法被转换成为UTF-8格式的。

45530

ECMAScript 2019(ES10)新特性简介

简介 ES10是ECMA协会在2019年6月发行的一个版本,因为是ECMAScript的第十个版本,所以也称为ES10. 今天我们讲解一下ES10的新特性。...Array的新方法flat和flatMap 在ES10中,给Array引入了两个新的方法,分别是flat和flatMap。 先来看一下flat。...我们看一下 Array.prototype.flat() 的定义: .flat(depth = 1): any[] flat的作用是将Array中的Array中的内容取出来,放到最顶层Array中...我们再看一下Array.prototype.flatMap()的定义: .flatMap( callback: (value: T, index: number, array: T[]...我们知道在Unicode编码中,U+D800到U+DFFF的这些字符是预留给UTF-16使用,如果我们输入的是这个范围内的字符的话,是无法被转换成为UTF-8格式的。

65720
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Spark核心数据结构RDD的定义

    而且Array、List对象拥有的许多操作RDD对象也有,比如flatMap、map、filter、reduce、groupBy等。 其次,RDD是分布存储的。...但是在有些操作中,只访问部分数据块是无法完成的,必须访问RDD的所有数据块。...RDD的高可靠性不是通过复制来实现的,而是通过记录足够的计算过程,在需要时(比如因为节点故障导致内容失效)重新从头或从某个镜像重新计算来恢复的。...数据中,类型是Partition,没用Seq,这主要考虑到随时需要通过下标来访问或更新 // 分区内容,而dependencies_使用Seq是因为它的使用场景一般是取第一个成员或遍历 @transient...Spark调度和计算都基于这5个属性,各种RDD都有自己实现的计算,用户也可以方便地实现自己的RDD,比如从一个新的存储系统中读取数据。

    1.6K41

    Why Swift? Generics(泛型), Collection(集合类型), POP(协议式编程), Memory Management(内存管理)

    意思是 HTNState 协议只能作为泛型约束来用,因为它里面包含必需的 self 或者关联类型。 那么该如何处理呢?这里需要通过类型擦除来解决,主要思路就是加个中间层在代码中让这个抽象的类型具体化。...像集合的 forEach,elementsEqual,contains,minElement,maxElement,map,flatMap,filter,reduce 等功能都是因为有了 Sequence...最后 Collection 概念是因为 Sequence 无法确定集合里的位置而在 Sequence 的基础上实现了 Indexable 协议。...下面看看 Swift 源码(swift/stdlib/public/core/SequenceAlgorithms.swift.gyb)中 flatmap 的实现: //===------------...直接派发是最快的,原因是调用指令会少,还可以通过编译器进行比如内联等方式的优化。缺点是由于缺少动态性而不支持继承。

    1.2K20

    详解ECMAScript2019ES10新属性

    Array.prototype.flat() The flat() method creates a new array with all sub-array elements concatenated...Array.prototype.flatMap() The flatMap() method first maps each element using a mapping function, then...both into one method is slightly more efficient. -- MDN 简单来说flatMap等于一个数组先调用完map函数再调用flat函数将其扁平化,扁平化的深度固定为...description,这个属性会返回一个undefined,因为这样才说这个属性是可选的 console.log(Symbol().description) // undefined // 这个属性是只读的...error,可是我觉得开发者应该避免使用这个属性,因为在我看来所有的错误都应该被处理,至少应该被console.error出来,否则可能会有一些潜在的bug,举个例子: let testJSONObj

    27710

    纯函数与领域模型

    同时,该副作用使得我们无法根据输入参数推断函数的返回结果,因为读取文件可能出现一些未知的错误,如读取文件错误,又或者有其他人同时在修改该文件,就可能抛出异常或者返回一个不符合预期的邮件列表。...读取外部文件的这种副作用使得我们无法根据确定的输入参数推断出确定的计算结果。...对同一个列表执行相同的转换函数,但调用flatMap函数: scala> l.flatMap(lang => lang.toCharArray) res6: List[Char] = List(s, c...然而在Monad的真正实现中,flatMap并非map与flattern的组合,相反,map函数是flatMap基于unit演绎出来的。...例如,我们将两个同等大小列表中的元素项相乘,使用flatMap与map的代码为: val ns = List(1, 2) val os = List(4, 5) val qs = ns.flatMap(

    1.1K10

    Kotlin 学习笔记(二)

    其实这两个方法是 data class 用来解构的,方便用户直接拿到某个对象中的属性值,如下: // code 3 val book = Book(, "鲁迅文集") book.id = //...这两个 component 是 data class 自动生成的,如果普通的 class 也想这样解构,也可以,需要使用 operator 关键字,对类中的属性做一个关联: // code 4 class...array 可修改元素值,修改后为 [99,2,3,4,5] 与 code 9 中的 List 不一样的是,Array 的这种初始化后的 array 对象,是可以对数组中的元素做修改的,但是其他的...调用 flatMap 方法将数组中的 Integer 元素一个个取出 return Observable.fromArray(integers);...而且更好用,比如 Kotlin 不用 flatMap ,自动就将集合中的元素拆成一个个的了,filter 里面的 it 就是代表的集合中的一个个的元素。

    63410

    厉害了,一个更智能的 JavaScript 映射器:array.flatMap()

    直接使用 array.map() 是不可能的,因为该方法总是创建一个映射的数组,其项数与原数组相同。但是我们可以使用 array.map()和 array.filter() 的组合。...使用 array.flatMap() 方法,只需调用一个方法就可以执行映射和删除项目。...当扁平[2 * number]数组时,结果数组中只添加2 * number。 你也可以使用 array.flatMap()来增加映射的数组中的项目数量。...同时又能控制你想在新的映射数组中添加多少项,那么 array.flatMap() 方法就是一个好办法。...array.flatMap(callback) 的回调函数被调用,有3个参数:当前迭代的项、索引和原始数组。然后,从回调函数返回的数组在1层深处被扁平化,得到的项目被插入到所产生的映射数组中。

    70910

    掌握现代JavaScript:ES7到ES12的新特性全解析!

    {flat, flatMap} 扁平化嵌套数组1.1 Array.prototype.flat1.1.1 定义1.1.2 语法1.1.3 返回值1.1.4 举例1.1.5 注意1.1.6 替换1.2 Array.prototype.flatMap1.2.1...{flat, flatMap} 扁平化嵌套数组1.1 Array.prototype.flat1.1.1 定义flat()方法会按照一个可指定的深度遍历递归数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回...1.2.3 语法arr.flatMap(function callback(currentVal[, index[, array]]) { }[, thisArg])callback: 可以生成一个新数组所调用的函数...六、JSON.stringify() 的增强力JSON.stringify() 在 ES10 修复了对于一些超出范围的 Unicode 展示错误的问题,所以遇到 0xD800-0xDFF 之内的字符会因为无法编码成...允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用都是否有效。?.

    57730

    ES2019 中 8 个非常有用的功能

    */ // }" Array.prototype.flat() 和 Array.prototype.flatMap() 数组是 JavaScript 的基本组成部分之一。它们有时会引起很多问题。...console.log(myInfiniteFlatArray) // Output: // [ 'JavaScript', 'C', 'C++', 'Assembly', 'Bytecode' ] Array.prototype.flatMap...区别在于 flatMap() 方法把 flat() 与 map() 结合了起来。在展平数组时,可以调用回调函数。 这样就可以在展平过程中使用原始数组中的每个元素。...Symbol.prototype.description 符号是在 ES2015(ES6)中引入的新数据类型。它们通常用于标识对象属性。ES2019 增加了 description 属性。...这个属性是只读的,无法更改它的值。它用来返回给定符号的描述。 要牢记两点。首先,创建符号时描述不是必须的,而是可选的。

    2.2K20

    谈谈 Swift 中 Sequence(序列) 、Collection(集合) 和高阶函数

    下面我们通过 sil 代码来看一看: 这里贴关键的代码: 首先调用了 Collection 协议中的 makeIterator()方法,创建了一个 indexingIterator 接下来调用 IndexingIterator.next...,这里我们在源码中测试发现是调用的Collection协议中的map函数来到Collection.swift文件中 extension Collection { /// Returns an array...在SequenceAlgorithms.swift文件中我们可以找到flatMap的源码实现: extension Sequence { /// Returns an array containing...然后拼接在开始创建的集合中 看完函数的实现我们也就理解了为什么一个二维数组调用flatMap函数后会返回一个一维数组。...使用lazy关键字后返回的是一个LazySequence的值,下面我们就去源码中看看LazySequence: 在LazySequence.swift文件中我们可以看到: lazy是Sequence扩展中的一个计算属性

    2.2K30

    ES10 都出了,还没弄明白 ES6?

    {flat,flatMap} flat Array.prototype.flat( [ depth ] ) 即用来打平数组的flatten方法,支持一个可选的depth参数,表示打平指定层数(默认为...flated : flat(flated, depth - 1); } return arr; }; flatMap Array.prototype.flatMap ( mapperFunction...[ , thisArg ] ) P.S.可选参数thisArg用作mapperFunction中的this,例如: [1, 2, 3, 4].flatMap(function(x) { return...(也可以对应 0 个) 例如: [2, 0, 1, 9].flatMap(x => new Array(x).fill(x)) // 得到 [2, 2, 1, 9, 9, 9, 9, 9, 9, 9,...) 浏览器特性检测:只想知道是否支持特定特性 善后措施异常:比如logError()自身出现异常,即便能捕获到也无计可施了 P.S.即便在这些场景,决定忽略一个异常时也应该在注释中说明原因 Array.prototype.sort

    65720

    Scalaz(57)- scalaz-stream: fs2-多线程编程,fs2 concurrency

    用merge其中一个问题是我们无法确定当前的元素是从那里发出的,我们可以用either来解决这个问题: 1 (sa either sb).through(log("AB>")).run.unsafeRun...//| C>9 33 //| ABC>9 如果我们无法确定数据源头数量的话...这种情况最容易处理,因为直接可以获取结果 2、产生副作用的运算是异步的:通过调用一次callback函数来提供运算结果 3、产生副作用的运算是异步的,但结果必须通过多次调用callback函数来分批提供...[Byte]]: 1 val bytes = T.async[Array[Byte]] { (cb: Either[Throwable,Array[Byte]] => Unit) => { 2 Task.delay...如果需要多次调用callback,比如外部程序也是一个Stream API:一旦数据准备好就调用一次callback进行传送。这种情况下可能出现我们的程序来不及处理收到的数据的状况。

    95460

    ES7、ES8、ES9、ES10、ES11、ES12新特性大全!

    {flat, flatMap} 扁平化嵌套数组 1.1 Array.prototype.flat 1.1.1 定义 flat()方法会按照一个可指定的深度遍历递归数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回.../flat ) 1.2 Array.prototype.flatMap 1.2.1 定义 flatMap()方法首先使用映射函数映射数组(深度值为1)的每个元素,然后将结果压缩成一个新数组。...1.2.3 语法 arr.flatMap(function callback(currentVal[, index[, array]]) { }[, thisArg]) callback: 可以生成一个新数组所调用的函数...、JSON.stringify() 的增强力 JSON.stringify() 在 ES10 修复了对于一些超出范围的 Unicode 展示错误的问题,所以遇到 0xD800-0xDFF 之内的字符会因为无法编码成...允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用都是否有效。?.

    28310
    领券