使用扩展运算符替换集合的对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用扩展运算符替换集合的对象相关的知识,希望对你有一定的参考价值。

我试图返回一个更新的tabs数组的新列对象,并将此对象替换为我的数据源中的现有对象。这是相关部分。下面,使用spread,但是,它将我的对象添加到列的末尾。如何让它替换现有的列?谢谢!

newState = {
  columns: [
    { id: column.id, title: column.title, tabs: removedTabs },
    ...state.columns
  ],
    columnOrder: ["chromeTabs", ...state.columnOrder]
};  

codesandbox link

答案
newState = {
  columns: [
    ...state.columns.filter(item => item.id !== column.id),
    { id: column.id, title: column.title, tabs: removedTabs }
  ],
    columnOrder: [...state.columnOrder.filter(item => item !== 'chromeTabs'), "chromeTabs"]
};

返回一个已过滤的数组和您的新项,应该按照您的预期进行操作,使用spread运算符替换仅对象上的现有项(因为键是唯一的)而不是数组。

const obj = {
  cool: "is it cool ?"
};

console.log({ ...obj, cool: "definetly" });

以上是关于使用扩展运算符替换集合的对象的主要内容,如果未能解决你的问题,请参考以下文章

ES6 扩展运算符

使用嵌套片段和动画对象

代码片段 - Golang 实现集合操作

Babel 无法使用扩展运算符编译 ES6 对象克隆

替换从 VAST 代码返回的多个 HLS VOD 片段

为啥不能在对象键之后使用 Javascript 扩展运算符?