javascript - 将内容从一个对象复制到另一个对象时,按键名排除特定键/值对
问题描述
以下示例工作正常,产生了所需的输出。但是,我想知道是否有更简洁的方法可以通过排除键created
和对象updated
的键/值对来执行此复制操作。data
const actionMode = 'update'; // 'create';
const dataFromParent = {
itemid: "104",
itemname: "insurance",
itemtype: "expense",
unitofmeasure: "$/yr",
created: "2021-04-14 05:59:30.097",
updated: "2021-04-14 05:59:30.097"
}
const data = { ...dataFromParent }; // make a shallow copy to avoid changing original object values
if (actionMode == 'update') {
delete data.created;
delete data.updated;
}
console.log(JSON.parse(JSON.stringify(dataFromParent)));
console.log(JSON.parse(JSON.stringify(data)));
使用@vdegenne 于 2018 年 11 月 23 日在这篇文章中发布的建议,我尝试了:
let data = {};
if (actionMode == 'update') {
data = (({ created, updated, ...o }) => o)(dataFromParent);
}
编辑:
此修改给出了预期的结果并且没有任何"no-unused-vars"
错误:
let data = {};
if (actionMode == 'update') {
// eslint-disable-next-line no-unused-vars
const { created, updated, ...rest} = { ...dataFromParent };
data = rest;
}
解决方案
您可以使用对象解构,以便它将分配created
、updated
值和其他属性分配到单个对象中。
由于您使用的是 VUE,因此在所有 import in script
tag in之前添加以下代码段x.vue file
。查看 VUE
// eslint-disable-next-line no-unused-vars
如果错误仍然存在,则更改ESLint
package.json 中的配置
"rules": {
"no-unused-vars": "off"
}
const dataFromParent = {
itemid: "104",
itemname: "insurance",
itemtype: "expense",
unitofmeasure: "$/yr",
created: "2021-04-14 05:59:30.097",
updated: "2021-04-14 05:59:30.097",
};
const { created, updated, ...rest } = dataFromParent; // make a shallow copy to avoid changing original object values
const data = rest;
console.log(data);
推荐阅读
- javascript - TailwindCSS + Nuxt 背景图片
- kubernetes - 就绪探测失败:超时:未能在 1 秒内连接服务“:8080”
- python - 如何将 .sigmf-meta 文件加载为 JSON?
- java - 我怎样才能拥有单独的调试和发布版本的 gradle 项目,它们可以引入同一类的不同版本?
- multithreading - 从我在 C++11 中的主循环中在自己的线程中读取和写入不同的文件
- javascript - 使用 rxjs 和旧式回调的同步问题
- flutter - 路由在颤动中没有按预期工作
- python - 报纸.article.ArticleException:文章“下载()”失败,出现403客户端错误:url被禁止
- php - 如何使用 Laravel 将图像上传到 Imgur?
- makefile - 尝试运行特定于平台的构建时 Automake 失败