当前位置: 首页 > news >正文

【es6复习笔记】Spread 扩展运算符(8)

在现代前端开发中,JavaScript 的扩展运算符(Spread Operator)是一个非常有用的特性,它允许你将数组或对象展开,以便在函数调用、数组拼接、对象复制等场景中更方便地处理数据。扩展运算符(spread)也是三个点(…)。它可以将一个数组或对象转换成用逗号分隔的参数序列,用于解包。

一、扩展运算符的基本用法

1. 数组的合并

扩展运算符可以用来合并多个数组,它会将数组中的元素展开,然后拼接在一起。

const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const arr3 = [...arr1,...arr2];
console.log(arr3); // 输出: [1, 2, 3, 4, 5, 6]
2. 数组的克隆

扩展运算符可以用来克隆一个数组,它会创建一个新的数组,并将原数组的元素复制到新数组中。

const arr1 = [1, 2, 3];
const arr2 = [...arr1];
console.log(arr2); // 输出: [1, 2, 3]
3. 将伪数组转为真正的数组

在 JavaScript 中,document.querySelectorAll 等方法返回的是一个类数组对象(NodeList),而不是真正的数组。使用扩展运算符可以将这些伪数组转换为真正的数组,以便使用数组的方法。

const divs = document.querySelectorAll('div');
const divArr = [...divs];
console.log(divArr); // 输出: 包含所有 div 元素的数组
4.数组解包
let tfboys = ['德玛西亚之力', '德玛西亚之翼', '德玛西亚皇子'];
function fn() {console.log(arguments);
}
fn(...tfboys); // 输出: ['德玛西亚之力', '德玛西亚之翼', '德玛西亚皇子']
5.对象解包
let skillOne = { q: '致命打击' };
let skillTwo = { w: '勇气' };
let skillThree = { e: '审判' };
let skillFour = { r: '德玛西亚正义' };
let gailun = { ...skillOne, ...skillTwo, ...skillThree, ...skillFour };
console.log(gailun); // 输出: { q: '致命打击', w: '勇气', e: '审判', r: '德玛西亚正义' }

二、扩展运算符的高级用法

1. 函数参数的展开

扩展运算符可以用来展开数组,并将其作为函数的参数传递。

function sum(a, b, c) {return a + b + c;
}const numbers = [1, 2, 3];
console.log(sum(...numbers)); // 输出: 6
2. 对象的合并

扩展运算符也可以用来合并对象,它会将对象的属性展开,并合并到一个新的对象中。

const obj1 = { a: 1, b: 2 };
const obj2 = { c: 3, d: 4 };
const obj3 = {...obj1,...obj2 };
console.log(obj3); // 输出: { a: 1, b: 2, c: 3, d: 4 }
3. 对象的克隆

扩展运算符可以用来克隆一个对象,它会创建一个新的对象,并将原对象的属性复制到新对象中。

const obj1 = { a: 1, b: 2 };
const obj2 = {...obj1 };
console.log(obj2); // 输出: { a: 1, b: 2 }

总结

扩展运算符是 JavaScript 中一个非常强大的特性,它可以让你更方便地处理数组和对象。通过使用扩展运算符,你可以避免编写繁琐的循环和条件语句,从而使你的代码更加简洁和易于维护。

http://www.lryc.cn/news/509259.html

相关文章:

  • 第22天:信息收集-Web应用各语言框架安全组件联动系统数据特征人工分析识别项目
  • 后端-redis
  • 开发场景中Java 集合的最佳选择
  • golangci-lint安装与Goland集成
  • 金仓数据库安装-Kingbase v9-centos
  • 条款6:auto推导若非己愿,使用显式类型初始化惯用法
  • 蓝桥杯物联网开发板硬件组成
  • 视频汇聚融合云平台Liveweb一站式解决视频资源管理痛点
  • (aaai2025) FD2-Net: Frequency-Driven Feature Decomposition Network
  • 深度学习之目标检测——RCNN
  • 2014年IMO第3题
  • 国高材服务 | 高分子结晶动力学表征——高低温热台偏光显微镜
  • 跨站请求伪造之基本介绍
  • Hadoop集群(HDFS集群、YARN集群、MapReduce​计算框架)
  • 单元测试(UT,C++版)经验总结(gtest+gmock)
  • Mysql高级部分总结(二)
  • 纠正一下网络管理
  • homebrew,gem,cocoapod 换源,以及安装依赖
  • Java字符串的|分隔符转List实现方案
  • Kafka可视化工具 Offset Explorer (以前叫Kafka Tool)
  • DeepWalk 原理详解
  • GitLab安装|备份数据|迁移数据及使用教程
  • 嵌入式linux驱动框架 I2C系统驱动程序模型分析
  • 深度学习实验十七 优化算法比较
  • 一个双非选手的秋招总结
  • 如何提高永磁电动机的节电效果
  • 在一个服务器上抓取 Docker 镜像并在另一个服务器上运行
  • 开源轮子 - Logback 和 Slf4j
  • 内部知识库的未来展望:技术融合与用户体验的双重升级
  • 【Linux系列】Shell 命令:`echo ““ > img.sh`及其应用