【问题标题】:Change javascript Object attributes to nested object values [closed]将javascript对象属性更改为嵌套对象值[关闭]
【发布时间】:2020-07-11 03:08:47
【问题描述】:

所以我有一个具有以下格式的对象

const objA = {
              A: {a: 1, b: 2},
              B: {a: 3, b: 4},
             }

我正在尝试获取具有以下结构的新对象

objB = {
      A: 1,
      B: 3,
    }

其中每个键的值是嵌套对象中属性a 的值。我在使用函数式编程时遇到了麻烦

谢谢!

【问题讨论】:

  • 你试过循环吗?
  • 请访问help center查看内容和How to Ask。提示:发布努力和代码。
  • 抱歉,我是 javascript 和一般编码的新手,我会阅读帮助中心,谢谢!我尝试了一个循环并且它起作用了......但我只是试图使用函数式编程来完成相同的结果以了解更多信息,几个小时后无法弄清楚。

标签: javascript object nested-object


【解决方案1】:

您应该只遍历父对象的键,并将内部对象的键 a 的值分配给它们。就是这样,

const objA = {
              A: {a: 1, b: 2},
              B: {a: 3, b: 4},
             }
const objB = {}

for (var key in objA) {
    if (objA.hasOwnProperty(key)) {
         objB[key] = objA[key].a
    }
}

输出:

objB = {
      A: 1,
      B: 3,
    }

【讨论】:

  • 感谢您的回答,我认为有一种方法可以通过使用一些减少或解构来完成同样的事情。
【解决方案2】:

你可以用Array.prototype.reduce()遍历Object.keys()

const objA = {A:{a:1,b:2},B:{a:3,b:4},},
             
      result = Object.keys(objA).reduce((r,key) => (r[key] = objA[key].a, r),{})
      
console.log(result)
.as-console-wrapper{min-height:100%;}

【讨论】:

  • 感谢您的回答,这正是我想要的!
猜你喜欢
  • 1970-01-01
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-19
  • 2020-11-03
  • 2020-12-30
相关资源
最近更新 更多