传播和休息运算符

传播和休息运算符

从现有数组形成一个新数组,字符噪音更少。spread 将元素提取为值。它是一个不可变的函数。[] 是写入新数组的方式。因此,展开不会改变原始数组。spread 适用于所有可迭代对象,而不仅仅是数组。iterables:字符串、数组、映射、集合,即除了对象数据类型之外的大多数内置数据结构。 与解构的区别:从数组中提取所有元素,并且不创建新变量,仅在需要值 csv 的地方使用。当我们构建数组或将值传递给函数时使用。

const nums = [5,6,7];const newnums = [1,2, nums[0],nums[1],nums[2]];console.log(newnums); // [ 1, 2, 5, 6, 7 ]is reduced to const nums = [5,6,7];const newnums = [1,2, ...nums];console.log(newnums); // [ 1, 2, 5, 6, 7 ]console.log(...newnums); // 1 2 5 6 7

1. 将两个数组合并在一起

const arr1 = [1,2,3,4,5];const arr2 = [6,7,8,9];let nums = [...arr1,...arr2];nums; // [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]const firstname = "peter";const fullname = [...firstname,' ',"p."];fullname; // [ 'p', 'e', 't', 'e', 'r', ' ', 'p.' ]console.log(...firstname); // 'p' 'e' 't' 'e' 'r'

错误来源:扩展运算符在模板字符串中不起作用,因为模板字符串不希望其中有多个值。

2. 创建数组的浅拷贝

const girl = {  name: 'melania',  friends: ['alina', 'alice', 'ayesha', 'anamika', 'anaya']};const frnz = [...girl.friends];console.log(frnz); // [ 'alina', 'alice', 'ayesha', 'anamika', 'anaya' ]console.log(girl.friends); // [ 'alina', 'alice', 'ayesha', 'anamika', 'anaya' ]

spread 也适用于对象,即使它们不是可迭代的。

let male = {  "firstname": "gangadhar",  "lastname": "shaktimaan"}let female = {  "firstname": "geeta",  "lastname": "vishwas"}let x = {...male, born: 1950};let y = {...female, born: 1940};x; // { firstname: 'gangadhar',   lastname: 'shaktimaan',   born: 1950 }y; // { firstname: 'geeta',  lastname: 'vishwas',  born: 1940 }```## shallow copy of objects:let male = {  "firstname": "gangadhar",  "lastname": "shaktimaan"}let character = {...male, firstname: 'wonderwoman'};male;         // { firstname: 'gangadhar', lastname: 'shaktimaan' }character;    // { firstname: 'wonderwoman', lastname: 'shaktimaan' }- first name for character object is changed although it was extracted from male object

休息模式和休息参数:

rest 的作用与 spread 相反,但具有与 spread 相同的语法。spread 用于构建新数组或将值传递给 fn。在这两种情况下,扩展都用于扩展元素。rest 使用相同的语法,但将这些值压缩为一个spread 用于从数组中解包元素,rest 用于将元素打包到数组中。““

展开运算符和剩余运算符的语法差异:
扩展运算符 => … 用于赋值运算符的 rhs。
const nums = [9,4, …[2,7,1]];

剩余运算符=> …将位于带有解构的赋值运算符的lhs上
const [x,y,…z] = [9,4, 2,7,1];

## rest syntax collects all the elements after the last elements into an array. doesn't include any skipped elements. - hence, it should be the last element in the destructuring assignment.- there can be only one rest in any destructuring assignment.

let diet = [‘披萨’, ‘汉堡’,’面条’,’烤’,’寿司’,’dosa’,’uttapam’];

让[第一,第三,…其他] =饮食;
首先;
第三;
其他;

- rest also works with objects. only difference is that elements will be collected into a new object instead of an arrray.

let days = { ‘mon’:1,’tue’:2,’wed’:3,’thu’:4,’fri’:5,’sat’:6,’sun’:7};
让{周六,周日,…工作} = 天;
放开= {周六,周日};

工作; // { 周一:1,周二:2,周三:3,周四:4,周五:5 }
离开; // { 周六: 6, 周日: 7 }

- although both look same, but they work differently based on where they are used.

休息和传播的微妙区别:

算家云 算家云

高效、便捷的人工智能算力服务平台

算家云 37 查看详情 算家云 扩展运算符用于我们写入用逗号分隔的值使用休息模式,我们将编写用逗号分隔的变量名称。


以上就是传播和休息运算符的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/459113.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 02:45:39
下一篇 2025年11月8日 02:46:25

相关推荐

  • JavaScript生成器与迭代器协议实现

    生成器和迭代器基于统一协议实现惰性求值与数据遍历,通过next()方法返回{value, done}对象,生成器函数简化了迭代器创建过程,提升处理大数据序列的效率与代码可读性。 JavaScript中的生成器(Generator)和迭代器(Iterator)是处理数据序列的重要机制,尤其在处理惰性求…

    2025年12月6日 web前端
    000
  • 8个超好用的Python内置函数,提升效率必备!

    python中有许多内置函数,不像print那么广为人知,但它们却异常的强大,用好了可以大大提高代码效率。 这次来梳理下8个好用的python内置函数。 1、set() 当需要对一个列表进行去重操作的时候,set()函数就派上用场了。 代码语言:javascript代码运行次数:0运行复制 obj …

    2025年12月3日
    100
  • JavaScript如何用Array.of创建数组

    array.of() 比 new array() 更适合创建新数组,因为它始终将所有参数视为数组元素,避免了构造函数在单个数字参数时创建空数组的歧义。1. array.of() 无论传入多少参数,都会直接创建包含这些元素的数组;2. 而 new array() 在仅一个数字参数时会创建相应长度的空数…

    2025年12月2日 web前端
    000
  • ES6中如何用数组的fill方法填充元素

    fill()方法常见应用场景有四:1.创建并初始化固定长度数组;2.重置数组特定部分;3.算法中使用全值数组作为初始状态;4.填充占位符或默认值数组。例如new array(10).fill(0)快速生成十个零,gameboard.fill(null, 2, 5)清空棋盘部分区域,visitedno…

    2025年12月2日 web前端
    000
  • ES6中如何用Array.from转换类数组

    array.from() 是 es6 中用于将类数组对象或可迭代对象转换为新数组的方法。其语法为 array.from(arraylike, mapfn, thisarg),其中 arraylike 是必填参数,表示要转换的对象;mapfn 和 thisarg 为可选参数,分别用于元素映射和指定 t…

    2025年12月2日 web前端
    000
  • Python any()函数用法解析

    %ign%ignore_a_1%re_a_1%的any()函数用来检测可迭代对象中是否有任意元素为true。 1、 创建可遍历的对象 2、 使用any函数进行判断 黑色全屏自适应的H5模板 黑色全屏自适应的H5模板HTML5的设计目的是为了在移动设备上支持多媒体。新的语法特征被引进以支持这一点,如v…

    2025年12月2日 软件教程
    000
  • Python any函数用法解析

    %ign%ignore_a_1%re_a_1%的any()函数用于检测可迭代对象中是否存在至少一个为真的元素,若存在则返回true,否则返回false。 1、 创建一个可遍历的对象。 2、 通过any()函数检测可迭代对象中是否存在至少一个为真的元素。 立即学习“Python免费学习笔记(深入)”;…

    2025年12月2日 软件教程
    000
  • 更基本的语法 – 循环和异常

    本周是毫无成效的一周之一。我在训练营内容上没有取得太大进展,但我设法涵盖了本模块的最后一个理论单元: java 和大多数源自 c 的高级语言一样,具有三种基本类型的重复循环(著名的循环):for、while 和 do-while。 for 当我们预先知道将用作可迭代对象(如数组)的元素的大小时使用。…

    2025年12月2日 java
    000
  • Go语言中的类型泛化与泛型模拟:接口的运用与演进

    Go语言在早期版本中,不直接支持Haskell等语言中的类型变量或泛型。为了实现类型无关的功能,Go语言主要依赖空接口`interface{}`。通过将参数和返回值声明为`interface{}`,函数可以处理任何类型的数据,但需要进行类型断言来恢复具体类型。Go 1.18版本后引入了真正的泛型,为…

    2025年12月1日 后端开发
    000
  • Java中动态列表按行分组格式化输出教程

    本教程详细讲解如何在java中将一个不定数量的字符串列表(如游戏物品清单)按指定数量(例如每行三个)进行分组,并以逗号分隔的形式输出到控制台。文章将介绍如何利用string.join()结合list.sublist()方法,优雅地处理列表末尾不足一组的情况,避免使用固定格式化字符串可能导致的运行时错…

    2025年12月1日 java
    000
  • JavaScript如何用Promise.allSettled处理结果

    promise.allsettled用于等待所有promise完成(无论成功或失败),并返回结果数组。它会收集每个promise的status、value(fulfilled时)或reason(rejected时)。1. 它不会因某个promise被拒绝而中断整体流程;2. 返回的结果数组中每个对象…

    2025年12月1日 web前端
    000
  • JavaScript中生成器与异步编程

    生成器在异步控制流中的核心作用是作为“流程协调员”,提供非阻塞式的暂停与恢复机制。①通过function*和yield关键字,允许函数中途暂停并将值“吐”出,外部通过next()方法传回值并继续执行;②支持以同步方式编写异步代码,提升可读性和维护性;③提供统一的错误处理机制,通过generator.…

    2025年11月30日 web前端
    100
  • Laravel Blade:如何优雅地处理循环中的空数据情况

    本文详细介绍了在Laravel Blade模板中,如何优雅地处理从数据库查询返回的空数据集。通过深入分析传统@foreach循环在处理空数据时的局限性,并引入Laravel提供的@forelse指令,展示了如何简洁高效地在数据为空时显示特定消息,从而提升用户体验和代码可读性。 在Web开发中,我们经…

    2025年11月30日
    000
  • Promise的静态方法全面解析

    promise的静态方法包括all、race、allsettled、any、resolve和reject,它们用于处理多个promise的并发、竞争、状态聚合等场景。promise.all()适用于所有任务必须成功完成的情况,任一失败则整体失败;promise.race()返回第一个完成(无论成功或…

    2025年11月29日 web前端
    000
  • ES6的迭代器协议如何自定义遍历

    要实现自定义遍历,需实现symbol.iterator方法和next()方法。1. 对象必须实现symbol.iterator方法,返回一个迭代器对象;2. 迭代器对象必须有next()方法,返回包含value和done属性的对象。例如创建可迭代的数组包装器时,this.index初始化为0,每次调…

    2025年11月29日 web前端
    000
  • Python “int”对象不可迭代错误:列表迭代的正确方法与去重求和实现

    本文旨在帮助开发者理解并解决Python中常见的“TypeError: ‘int’ object is not iterable”错误,尤其是在尝试迭代整数类型变量时。通过分析错误原因,并结合去重求和的实际案例,提供清晰的解决方案和最佳实践,助你写出更健壮的Python代码。…

    2025年11月29日 后端开发
    000
  • Python asyncio并发任务的超时控制与优雅关闭

    本文探讨了在Python asyncio中如何有效管理可能长时间阻塞的并发任务,并实现整体操作的超时控制。针对asyncio.gather在特定场景下的局限性,重点介绍了asyncio.wait方法,它允许设定超时时间,并能区分已完成和未完成的任务,从而实现对未完成任务的优雅取消,确保程序按预期及时…

    2025年11月29日 后端开发
    000
  • 如何用Python源码模拟内置函数行为 仿写核心功能理解源码逻辑

    模拟len()核心是检查对象是否有__len__方法并调用,否则尝试迭代计数并处理异常;2. 模拟range()需支持start/stop/step参数逻辑并用yield实现惰性生成;3. 深入理解python数据模型即对象通过__len__、__iter__等协议与内置函数交互;4. 纯pytho…

    2025年11月29日 后端开发
    000
  • Pandas多条件列生成:列表推导式与apply方法详解

    本文旨在探讨如何在Pandas DataFrame中基于多列条件创建新列。文章首先纠正了列表推导式中迭代多个Series的常见语法错误,指出应使用zip函数进行正确迭代。随后,针对复杂的多条件逻辑,详细介绍了如何结合df.apply()方法与自定义函数,实现更清晰、更易维护的代码结构。通过对比两种方…

    2025年11月29日 后端开发
    000
  • python中sorted()函数和列表的sort()方法有什么不同?

    sorted()返回新列表不改变原对象,sort()直接修改原列表。前者适用于需保留原数据且支持所有可迭代对象,后者仅用于列表但节省内存且通常更快,选择取决于是否需保留原列表及性能需求。 sorted() 返回一个新的排序后的列表,而 sort() 方法直接修改原列表。这就是最核心的区别。 sort…

    2025年11月29日 后端开发
    000

发表回复

登录后才能评论
关注微信