当前位置: 首页 > 面试题库 >

以不变的方式更新数组中的对象之一

谭曦
2023-03-14
问题内容

在React的this.state中,我有一个名为的属性,formErrors其中包含以下动态对象数组。

[
  {fieldName: 'title', valid: false}, 
  {fieldName: 'description', valid: true},
  {fieldName: 'cityId', valid: false},
  {fieldName: 'hostDescription', valid: false},
]

假设我需要将具有fieldName的state对象更新cityId为的有效值true

解决此问题的最简单或最常见的方法是什么?

我可以使用任何库immutability-helper,immutable-js等或ES6。我已经尝试并在Google上搜索了4个多小时,但仍然无法绕开它。非常感谢您的帮助。


问题答案:

您可以map用来迭代数据并检查fieldName,如果fieldName是cityId,则需要更改值并 返回一个新对象,
否则就return一样object

这样写:

var data = [
    {fieldName: 'title', valid: false}, 
    {fieldName: 'description', valid: true},
    {fieldName: 'cityId', valid: false},
    {fieldName: 'hostDescription', valid: false},
]

var newData = data.map(el => {
                  if(el.fieldName == 'cityId')
                     return Object.assign({}, el, {valid:true})
                  return el
              });

this.setState({ data: newData });


 类似资料:
  • 我有一系列推车。我想更新请求对象中的产品数量。即。 我有一个数组的产品和数量,比如: 我想更新它们,如: 这可能的逻辑是什么?

  • 问题内容: 有没有一种方法可以更新对象中的值? 假设我要为id = 2的项更新名称和值项; 我尝试了以下w /猫鼬: 这种方法的问题在于它会更新/设置整个对象,因此在这种情况下,我会丢失id字段。 猫鼬中是否有更好的方法来设置数组中的某些值,但不理会其他值? 我也只查询了这个人: 问题答案: 你近了 您应该在使用update运算符时使用点符号来做到这一点:

  • 是否有方法更新对象中的值? 假设我想更新id=2的项目的名称和值项目; 我尝试过以下猫鼬: 这种方法的问题在于它更新/设置了整个对象,因此在本例中,我丢失了id字段。 在mongoose中有没有更好的方法来设置数组中的某些值,而不设置其他值? 我也问过只是人:

  • 假设我们有以下集合,我对此没有什么问题: > 我想增加“item_name”的价格:“my_item_two”,如果它不存在,应该将它追加到“items”数组中。

  • 在reducer内部,给定一个状态对象: 在更新喷泉上。 我一直在查看这里的react ducomentation:https://facebook.github.io/react/docs/update.html,但我真的不知道如何做到这一点。请指教!

  • 问题内容: 在reducer内部,给定一个状态对象: 如您所见,数据是一个嵌套数组,每个元素中都有一个数组。 知道action.indexToUpdate将是数据索引,我想以编程方式将data [action.indexToUpdate] .subset更新为新数组。例如,如果action.indexToUpdate = 0,那么data [0]将从 至 为此,我有: 但是当我执行此操作时,它返回