首页 > 解决方案 > 扩展运算符以更新对象数组

问题描述

我有一个对象数组。在该数组中,我想更新单个对象,而在该对象中,我只想更新特定属性。我试过了:

setRequiredFields(prevRequiredFields => ([
            ...prevRequiredFields, prevRequiredFields.find(x => x.name = field) ?  {
                isValid: isValid,
                content: content,
                isUnchanged: false
            }
]));

但它没有用。必填字段是一个具有以下结构的数组:

[{
    name: "Name",
    isValid: false,
    content: "",
    isUnchanged: true,
    tip: "Name cannot be empty",
    isValidCondition: notEmptyRegex,
    reportState: validateField
}]

我在这里要做的是只更新该数组中一个特定对象的isValid,content和。isUnchanged我怎样才能做到这一点?

标签: javascriptreactjstypescript

解决方案


如果您有一个对象数组,并且您想更新数组中一个对象的几个属性。然后你可以做这样的事情。

const index = state.findIndex(x => x.name === field);
if(index > -1) {
  const newState = [...state];
  newState[index] = { 
    ...newState[index],
    isValid: isValid,
    content: content,
    isUnchanged: false
  }
  setRequiredFields(newState);
}
  • 查找要更新的对象的索引。
  • 在该对象内添加属性。
  • 更新反应状态。

推荐阅读