javascript - 如何根据动态定义的变量解构对象
问题描述
我正在使用一个不可变对象,我需要从中减去一个值数组。
我知道可以使用 ES6 破坏以下内容。
const {countries, remainder} = someObj // {countries:...,languages:..., ...keys};
这将结束我的其余部分是没有国家键的新对象。
因此,我发现我可以在数组上使用 reduce 来遍历并删除对象中的所有值,最后返回一个新对象,使用默认参数作为原始对象。
但是,我不知道该怎么做,因为键的名称是在数组中定义的。
arrayToRemove.reduce((total, value) => {
const { extractValue: [value], ...remainder } = total
return remainder;
}, { ...originalObj });
arrayToRemove.reduce((total, value) => {
const { [extractValue], ...remainder } = total
return remainder;
}, { ...originalObj });
我期望最终得到一个新对象,其中没有包含在名为 arrayToRemove 的数组中的键。
我需要在保持不变性的同时做到这一点,所以我不能只遍历原始对象并从中删除它们,所以我认为上面的方法是一个很好的方法。
任何帮助表示赞赏。
解决方案
您可以使用带有虚拟属性的计算属性名称作为目标属性。
在此处阅读更多内容:对象属性分配模式 [YDKJS: ES6 & Beyond]
var originalObj = { foo: 1, bar: 2, baz: 3, },
arrayToRemove = ['foo', 'bar'],
result = arrayToRemove.reduce((total, key) => {
const { [key]: dummy, ...remainder } = total;
return remainder;
}, originalObj);
console.log(result);
推荐阅读
- jdbc - Azur SQL数据库和google sheet之间的jdbc连接问题
- google-sheets - 谷歌表 Arrayformula 和 Min 问题
- java - 在句子字符串数组中查找特定单词并返回特定单词在整个数组中的频率
- r - 使用调色板导出传单
- c# - SharpShell 上下文菜单
- python - Seaborn Catplot 未在 x 轴上显示文本标签
- akka.net - Akka.Net - 通过 DI 创建一个子actor
- html - 当放置在特定元素中时,粘性 div 不会粘在屏幕上
- c# - 大众运输重试方法在哪里?
- amazon-web-services - 在运行 terraform 脚本以启动 aws 实例时出现此错误