javascript - 正确更新/合并 React Redux 存储中的数组值,不重复

标签 javascript arrays reactjs ecmascript-6 redux

我的初始状态如下所示,如果添加了新书或更改了价格,那么新的更新数组来自服务,我需要将其结果合并到我的初始状态。

const initialState = {
  booksData: [
    {"Code":"BK01","price":"5"},
    {"code":"BK02","price":"30"},
    {"code":"BK03","price":"332"},
    {"code":"BK04","price":"123"}
  ] 
};

来自服务器的更新数组有少量记录更新/新

data: [
  {"Code":"BK01","price":"10"},
  {"code":"BK02","price":"25"},       
  {"code":"BK05","price":"100"}
] 

更新后的状态应该是合并更新后的数组与旧数组。

booksData: [
  {"Code":"BK01","price":"10"},
  {"code":"BK02","price":"25"},
  {"code":"BK03","price":"332"},
  {"code":"BK04","price":"123"},
  {"code":"BK05","price":"100"}
] 

最佳答案

我会过滤掉新数据中旧数据的元素,然后合并。

const oldBooks = booksData.filter(book => !newData.some(newBook => newBook.code === book.code));
return oldBooks.concat(newData);

请记住,您不能将值压入旧数组。在您的 reducer 中,您必须创建新实例,这里是一个新数组。 'concat' 就是这样做的。

关于javascript - 正确更新/合并 React Redux 存储中的数组值,不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48208665/

相关文章:

javascript - 每个 Node 调用是否运行自己的 Node 版本

php - 将具有匹配数组的关联数组插入表键的最有效方法

javascript - 需要为日历创建自定义导航标题

javascript - jquery 上下 slider

javascript - 这个可疑且可能是恶意代码的作用是什么?

javascript - 在 React-Native 中按下按钮时不返回组件

ruby-on-rails - ruby 包括?使用 YAML 数组

java - 在java中显示打乱的整数数组

javascript - 从 fork 的 npm 包导入组件时出错

javascript - React 组件从函数更改为类 - 状态和状态钩子(Hook)