javascript - 复杂对象的扩展语法
问题描述
假设我有一个像这样的对象
let store = {
"articles": [{...}, {...}, ...],
"errors": { "p1": { "myNewObject":0 }, "p2": {...}, ...}
}
我想利用Spread 语法来返回这个对象的克隆,其中store.errors.p1
是一个新对象。以下是最简单的方法吗?
let newStore = { ...store, ...{ errors: { ...store.errors, p1: { "myNewObject":1 } } } }
解决方案
不,它不是克隆您的商店并进行深层复制的最简单语法p1
,但它非常接近:
let newStore = { ...store, ...{ errors: { ...store.errors, p1: { myNewObject: 1 } } } }
// ^^^^ ^
// |_______ not necessary ________________________________|
您可以删除多余的传播和括号周围errors
。
const store = { articles: [{ a: 1 }], errors: { p1: { myNewObject: 0 }, p2: { a: 1 } } }
const newStore = { ...store, errors: { ...store.errors, p1: { myNewObject: 1 } } }
console.log(JSON.stringify(store))
console.log(JSON.stringify(newStore))
推荐阅读
- go - 下载模块的原始代理
- node.js - 无法运行 puppeteer 获取请求错误父级
- django - 在 Django REST 框架中检索不相关的对象
- python - 在 Linux 上使用 Python zipfile 提取时出现 OSError 无效参数
- python - 如何获取网站上所有文章的链接?
- java - 我可以将字符串变量从 eclipse (java) 发送到 powershell 脚本吗
- python - 气流:让操作员在多个触发规则上触发
- heroku - pr-predestroy 脚本未运行 heroku
- postgresql - Aws ecs 一致地读取/更新 postgres 记录
- javascript - 发布时输入 type="file" 数据为空