首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用扩展和析构运算符修改不可变对象的最短方法是什么

使用扩展和析构运算符修改不可变对象的最短方法是什么
EN

Stack Overflow用户
提问于 2016-04-11 23:36:53
回答 3查看 16.4K关注 0票数 27

我正在寻找一个纯函数,来修改我的不可变状态对象。作为参数给出的原始状态必须保持不变。当使用像Redux这样的框架时,这特别有用,并且使得在javascript中使用immutable对象变得更加容易。特别是因为已经可以使用Babel来处理对象扩散操作符。

我没有找到比首先复制对象,然后像这样分配/删除我想要的属性更好的方法:

代码语言:javascript
复制
function updateState(state, item) {
  newState = {...state};
  newState[item.id] = item;
  return newState;
}

function deleteProperty(state, id) {
    var newState = {...state};
    delete newState[id];
    return newState;
}

我觉得还可以再短一点

EN

回答 3

Stack Overflow用户

发布于 2016-04-11 23:40:58

Object.assign是一种支持更多的ES6解决方案

代码语言:javascript
复制
const updateState = (state, item) => Object.assign({}, state, { [item.id]: item });
票数 8
EN

Stack Overflow用户

发布于 2019-03-05 13:30:41

尝试:

代码语言:javascript
复制
const { id, ...noId } = state;

和测试:

代码语言:javascript
复制
console.log(noId);
票数 1
EN

Stack Overflow用户

发布于 2018-02-02 07:18:21

从数组中删除项,只需使用filter ;)

代码语言:javascript
复制
CASE 'REMOVE_ITEM_SUCCESS':

      let items = state.items.filter(element => element._id !== action.id);

      return {
            ...state, 
            items
      }
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36553129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档