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

如何在不突变原数组的前提下将对象拼接至数组开头?

你的代码存在基础调用错误:concat是数组专属方法,你用普通对象addOnData直接调用concat会抛出类型错误,无法正常执行。

以下是满足「无突变、插入对象到数组开头」要求的两种可行方案:


方案1:使用concat方法(适配你现有使用习惯)

和你之前把对象追加到末尾的逻辑完全对称,只需要把待插入的对象先包裹为单元素数组,再调用concat拼接原数组即可:

const newArray = [addOnData].concat(array)

全程不会修改原数组和待插入对象,符合无突变要求。

方案2:使用ES6扩展运算符(写法更简洁)

现在行业内更常用的实现方式,可读性更高:

const newArray = [addOnData, ...array]

修改后的完整可运行代码:

const addOnData = {
  id: 0,
  value: "ID 0"
}

const array = [
  {
    id: 1,
    value: "ID 1"
  },
  {
    id: 2,
    value: "ID 2"
  },
  {
    id: 3,
    value: "ID 3"
  },
]

btn[1].addEventListener('click', (e)=>{
  // 两种写法二选一即可
  // const newArray = [addOnData].concat(array)
  const newArray = [addOnData, ...array]
  console.log(newArray);
  e.stopPropagation();
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 11:57:02