首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据动态定义的变量对对象进行结构分析

如何根据动态定义的变量对对象进行结构分析
EN

Stack Overflow用户
提问于 2019-01-07 02:59:08
回答 2查看 2.8K关注 0票数 3

我正在处理一个不可变的对象,我需要从这个对象中加减值的数组。

我知道使用ES6析构是可能的,如下所示。

代码语言:javascript
运行
复制
const {countries, remainder} = someObj // {countries:...,languages:..., ...keys};

这将结束我的工作,剩下的部分是新对象,没有国家键。

因此,我想我可以在数组上使用reduce来遍历并删除对象中的所有值,最后返回一个新对象,使用默认参数,即原始对象。

但是,我不确定该怎么做,因为键的名称是在数组中定义的。

代码语言:javascript
运行
复制
arrayToRemove.reduce((total, value) => {
  const { extractValue: [value], ...remainder } = total
  return remainder;
}, { ...originalObj });

arrayToRemove.reduce((total, value) => {
  const { [extractValue], ...remainder } = total
  return remainder;
}, { ...originalObj });

我希望最终得到一个没有包含在名为arrayToRemove的数组中的键的新对象。

我需要在保持不变性的同时做到这一点,所以我不能简单地循环遍历原始对象并将它们从其中移除,所以我认为上面的方法将是一个很好的方法。

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2019-01-07 03:05:22

您可以使用具有虚拟对象的computed property names作为目标属性。

点击此处阅读更多信息:object property assignment pattern [YDKJS: ES6 & Beyond]

代码语言:javascript
运行
复制
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);

票数 9
EN

Stack Overflow用户

发布于 2019-01-07 03:07:08

代码语言:javascript
运行
复制
arrayToRemove.reduce((obj, key) => {
  const { [key]: value, ...remainder } = obj
  return remainder
}, originalObj)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54064859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档