ES6 数组、对象的扩展

8. 数组的扩展

  1. 扩展运算符(...),将一个数组转为用逗号分隔的参数序列。

    • 复制数组 const a2=[...a1]
    • 合并数组 [...arr1, ...arr2, ...arr3]; arr1.concat(arr2, arr3);// ES5 的合并数组 这是浅拷贝,如果修改了原数组的成员,会同步反映到新数组。
    • 替代函数的 apply 方法
      // ES6 的写法
      let arr1 = [0, 1, 2];
      let arr2 = [3, 4, 5];
      arr1.push(...arr2);
  2. Array.from() 方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。

    let ps = document.querySelectorAll('p');
    Array.from(ps).filter(p => {return p.textContent.length > 100;
    });
  3. Array.of() 方法用于将一组值,转换为数组

    Array.of(3, 11, 8) // [3,11,8]
  4. 数组实例的 copyWithin()
    【替换位置,读取数据开始位置,结束位置】,如果为负值,表示倒数。

    [1, 2, 3, 4, 5].copyWithin(0, 3)
    // [4, 5, 3, 4, 5]
  5. 数组实例的 find()findIndex()
    find()所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。
    findIndex()

  6. fill() 方法使用给定值,填充一个数组

  7. entries()keys() , values() 用于遍历数组
    keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。

    for (let [index, elem] of ['a', 'b'].entries()) {console.log(index, elem);
    }
    // 0 "a"
    // 1 "b"
  8. includes() 表示某个数组是否包含给定的值
    indexOf方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1,表达起来不够直观。二是,它内部使用严格相等运算符(===)进行判断,这会导致对NaN的误判。

  9. flat()flatMap()
    flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1,Infinity所有层。如果原数组有空位,跳过空位。
    Array.prototype.map(),然后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组。

    // 相当于 [[2, 4], [3, 6], [4, 8]].flat()
    [2, 3, 4].flatMap((x) => [x, x * 2])
    // [2, 4, 3, 6, 4, 8]
  10. 数组的空位
    ES6 则是明确将空位转为undefined

9. 对象的扩展

  1. 属性、方法简写

    {f} 等同于 {f:f}
    method() {return "Hello!";
    }
    //等同于
    method: function() {return "Hello!";
    }
  2. 属性名表达式
    obj['a' + 'bc'] = 123;

  3. 方法的name属性返回函数名(即方法名)

  4. Object.is() 比较两个值是否相等

  5. Object.assign方法用于对象的合并

    const target = { a: 1 };
    const source1 = { b: 2 };
    const source2 = { c: 3 };
    Object.assign(target, source1, source2);
    target // {a:1, b:2, c:3}

    Object.assign方法的第一个参数是目标对象,后面的参数都是源对象。
    注意:如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。是浅拷贝

  6. 属性的可枚举性和遍历

7.
8.
9.

  1. Object.keys(),Object.values(),Object.entries()
    Object.keys() 返回一个数组,所有键名
    Object.values() 返回一个数组,所有属性的值
    Object.entries() 键值对数组 [ ["key", "value"], ["key", value] ]

  2. 对象的扩展运算符(...)
    和数组相似

转载于:https://www.cnblogs.com/conglvse/p/9759137.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MVVM及MVVMLight相关资料

(1)dwahlin (2)http://blog.csdn.net/duanzilin/article/category/816515

我损失几百万换来的教训

大家好,我是写代码的篮球球痴,看到朱老师一篇抉择影响人生走向的文章,文中的我是作者本人。---我2009年初开始工作,2010年离开苏州来到深圳,那时候深圳的房价其实还不高,至少在全国来说深圳的房价还远没有现…

strcat()

把源字符串 连接 到目的字符串的后面。目的字符串的长度要足够长 char *strcat(char *dest, const char *src) {assert((NULL ! dest) && (NULL ! src));char *cp dest;while (*cp ! \0){cp;}while ((*cp *src) ! \0){;}return dest; }

android mysql 图片_android sqlite添加图片到数据库

sqlite图片是怎么储存的呢?其实是二进制的方式存储的blob代表使用二进制储存 (更多类型参考:数据库简介)在创建表的地方,VALUE_PIC代表存储图片字段,blob代表这个字段是以二进制储存的。/*创建表语句 语句对大小写不敏感 create table 表名(字…

MCU为什么内部不集成晶振

01MCU为什么不集成晶振本文将用STM32代替MCU。原因1:早些年,芯片的生产制作工艺也许还不能够将晶振做进芯片内部,但是现在可以了。这个问题主要还是实用性和成本决定的。实用性:如果封装进入STM32内部,不利于不同客户更…

[JSOI2007]建筑抢修 (贪心)

题目链接 Solution 可以考虑 \(dp\) ,但是很显然 \((n^2)\) 降不下来. 然后考虑贪心,首先,绝对的正确的是,在同等的情况下,给后面的留更多的时间. 首先按照 \(T_2\) 排序. 然后我们维护一个大根堆 每修理一栋建筑 我们就把这栋建筑的T1值加入堆 若当前无法修理 我们判断堆顶是否…

cad中怎么随意移动图形_cad中怎么随意移动图形_绘制CAD图纸的过程中CAD快捷键失灵了怎么办?...

很多人在使用笔记本绘制CAD图纸的过程中,当用到CAD快捷键的时候会发现部分CAD快捷键无法正常使用,比如按F8后并没有切换成正交状态,而是出来了连接投影仪的选项,而且其他的快捷键也无法使用了,如下图所示。在以前老的笔…

strcmp()

比较2个字符串,返回2个字符串的差值 int strcmp(const char *str1, const char *str2) {assert((NULL ! str1) && (NULL ! str2));while(*str1 && *str2 && (*str1 *str2)){str1;str2;}return (*str1 - *str2); }

元旦加班

因为项目紧张,元旦加班了,这是在腾讯的第二次节假日加班。相对于害怕加班,我也害怕一段时间一段时间的浪费光阴一事无成,更害怕一段时间,一段时间加班后也是一事无成。加班有时候也挺舒服的,为了给乌托邦的…

MySQL中修改表结构的关键字_下列SQL语句中,修改表结构的关键字是

【单选题】对《将进酒》全诗分析不正确的是【单选题】下列划线词语的解释有误的一项是【多选题】下列食品属于不完全蛋白质的是 ( ) 。【单选题】下列聚合函数中属性列必须是数值型的是【单选题】( )体现了商品生产者之间相互交换的劳动关系。【单选题】在SELECT语句中使用SUM(…

strncpy()

char *strncpy(char *dest, const char *src, unsigned int count) {assert((NULL ! dest) && (NULL ! dsrc));char *ret dest;if (0 count){return dest;}while (count-- > 0){if (!(*ret *src)) //\0{return dest;}}*ret \0;//切记!!!!!return dest; }

远程用power shell 管理vmware view 池用户

1. 在客户端安装POWER SHELL V2.0的系统补丁,补丁号码为KB968930,里面包括了winrm和powershell 2.0 2. 将view connection server服务器设置为winrm的信任主机: PS C:\ set-item wsman:\localhost\Client\TrustedHosts -value IP为了能在计…

GitHub的嵌入式开源项目

来源:嵌入式大杂烩关于GitHub,可能很多人误以为这是互联网人的专属,其实并不是,那上面嵌入式相关的开源项目是有很多的。现分享一些高星开源项目(像RT-Thread、AWTK等大家都熟知的就不介绍了):A…

项目开发日志:Build AssetBundle——SpriteAtlas(已解惑)

项目信息:平台-AndroidUnity编辑器版本-2018.2.5f1状况1:真机状况下引用到图集下的sprite的UI显示出错。(图集被打成AB包且勾选了Include in Build).在我们的测试下发现了以下两个解决方案:(当然我觉得第二…

strncat()

将源字符串的前count个字符拷贝到目的字符串中 char *strncat(char *dest, const char *src, size_t count) {assert((NULL ! dest) && (NULL ! dsrc));char *cp dest;if (0 count)//返回原来的{return dest;}while (*cp ! \0){cp ;}while (count-- > 0){if (!(*c…

Sangfor上网行为管理单点登录配置

单点登录功能介绍: 当用户成功登录到第三方认证服务器时,自动通过AC的认证,而无需再次输入用户名和密码。 优点: 用户只需要输入一次账号和密码,即可自动通过AC的认证,避免账号和密码的重复输入&#xff0c…

教你精确计算 I2C 上拉电阻阻值

I2C 总线能挂多少设备?理论上:7-bit address :2 的 7 次方,能挂 128 个设备。10-bit address :2 的 10 次方,能挂 1024 个设备。当然,要把预留设备地址去除,7 bit 协议规定了 8个预留…

原型设计+用户规格说明书

用户规格说明书 作业链接:https://edu.cnblogs.com/campus/fzzcxy/2016SE/homework/2180 原型模型设计工具: 墨刀 原型模型链接:https://modao.cc/app/6a5fcc03e409ffe37cfcdb9cb06914271744f131 学号1:362 何永康 学号2&#xff…

mysql数据库中_截取数据_mysql数据库的字符串截取方法

MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。1. 字符串截取:left(str, length)mysql> …

排序算法之希尔排序(C/C++)

从第一个数开始,判断第一个数和n/2那个数的大小,如果v[0]大于v[n/2]就交换,1与3比较,2与4比较,3与5比较............... void shell_sort(char *str, int len) {int group 0, i 0, j 0, temp 0;if ((NULL str) ||…