首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何仅使用保存在数组中的键在javascript中的动态对象中移动?

如何仅使用保存在数组中的键在javascript中的动态对象中移动?
EN

Stack Overflow用户
提问于 2018-08-08 01:12:57
回答 2查看 52关注 0票数 0

下面是我的例子。我在Javascript中有一个动态更改的对象。在这种情况下,我想要"inside“属性的值,我知道它的位置是a[something][anotherthing][inside]。因为我将位置保存在数组["a","somethig", "anotherthing"]中。我的问题是如何使用数组中的键移动到该位置?我已经尝试过连接元素,最终的结果类似于这个myObject[a][somthing][anotherthing],但问题是它返回了'undefined‘,因为它是一个字符串。有没有可能将其转换为object,或者以某种方式在object中获得该位置?

代码语言:javascript
复制
var myarray = ['a', 'something', 'anotherthing'];
myObject = {
  a: {
    something: {
      anotherthing: {
        inside: 10
      }
    }
  },
  b: {
    insideb: {}
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-08 01:16:15

使用reduce将数组减少为单个值。您将传入myObject作为起点(第二个参数),然后使用这个基本回调(第一个参数):

代码语言:javascript
复制
(obj, itm) => obj[itm]

当你把它们放在一起时,它看起来是这样的:

代码语言:javascript
复制
var myarray = ['a', 'something', 'anotherthing'];

myObject = {
  a: {
    something: {
      anotherthing: {
        inside: 10
      }
    }
  },
  b: {
    insideb: {

    }
  }
}

let result = myarray.reduce((obj, itm) => obj[itm], myObject)

console.log(result)
console.log(result.inside)

票数 0
EN

Stack Overflow用户

发布于 2018-08-08 01:51:23

如果你知道这个值的确切位置:myObject['a']['somthing']['anotherthing']会给你这个值。

如果需要动态遍历对象,可以使用:Object.keys(myObject).forEach(key => myObject[key]);来获取顶级键。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51732135

复制
相关文章

相似问题

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