1

我有一个配置文件:

{
  "permission": {
    "users": {
      "image": {
        "data": "example"
      }
    }
  }
}

还有一个像这样被调用路径的数组:

path = ['users', 'image']

我怎样才能得到数据?

第一次尝试:

config.permission.path[0].path[1];

第二次尝试:

switch (requestedPath[2]) {
    case 'users':
        switch (requestedPath[3]) {
            case 'image':
                mydata = config.permission.users["/image"]
        }
}

这会起作用,但有更好的方法吗?

4

1 回答 1

3

您需要一个括号作为对象的属性访问器,因为您将变量作为键。

config.permission[path[0]][path[1]];

对于更动态的方法,您可以使用未找到属性的默认对象来减少给定数据。

const getV = (object, path) => path.reduce((result, key) => (result || {})[key], object);

var config = { permission: { users: { image: { data: 'example' } } } },
    path = ['users', 'image'];

console.log(getV(config.permission, path));

于 2019-02-25T13:17:19.080 回答