You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript数组:修改原数组与生成新数组方法的区分规则问询

JavaScript数组可变/不可变方法的区分规则

这个区分并没有复杂的底层规则,核心完全取决于方法的设计用途:

  • 意图直接修改原数组内容的方法属于可变方法,会修改原数组。这类方法大多用于元素增删、数组排序/反转/填充这类操作,比如push(末尾新增元素)、pop(末尾删除元素)、splice(指定位置增删元素)、sort(数组排序)、reverse(数组反转)、fill(批量填充元素)都属于此类。这类方法的返回值一般不是数组本身,而是操作的附属结果:比如push返回修改后数组的长度,splice返回被删除的元素集合。
  • 意图基于原数组生成新结果的方法属于不可变方法,会返回新数组/新值,不会修改原数组。这类方法大多用于数组截取、转换、过滤、合并这类操作,比如slice(截取数组片段)、map(按规则转换数组元素)、filter(按规则过滤元素)、concat(合并多个数组)都属于此类。这类方法的设计初衷就是不改动原始数据,避免产生意外的副作用。

如果担心不小心用错可变方法改动原数组,可以在操作前先对原数组做浅拷贝,比如用扩展运算符[...原数组]或者原数组.slice()生成新数组后再做修改操作。

内容的提问来源于stack exchange,提问作者Dominik21222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:57:01