javascript - 扩展运算符以更新对象数组
问题描述
我有一个对象数组。在该数组中,我想更新单个对象,而在该对象中,我只想更新特定属性。我试过了:
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
我怎样才能做到这一点?
解决方案
如果您有一个对象数组,并且您想更新数组中一个对象的几个属性。然后你可以做这样的事情。
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);
}
- 查找要更新的对象的索引。
- 在该对象内添加属性。
- 更新反应状态。
推荐阅读
- python-3.x - Linkedin 网页抓取片段
- java - 如何在 Java 中读取文件
- documentation - Apple 何时弃用或停止发布使用命名分叉的 API,即数据和资源分叉以外的分叉?
- environment-variables - uname.c 中的 HOST_OPERATING_SYSTEM 来自哪里?
- java - “类加载器创建的对象的方法和构造函数可能引用其他类”是什么意思?
- sql - 需要列值分散在多个列中
- reactjs - nivo.rocks 绘制图表不正确,线条不对应 XY
- python - VS Code 无法在 Anaconda 环境之间正确切换
- java - 编辑文本中的函数“if”
- kotlin - fx 块内的 IO 调度程序 VS KotlinX 调度程序