如何在不突变原数组的前提下将对象拼接至数组开头?
你的代码存在基础调用错误: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
相关产品推荐
相关产品推荐

