在JavaScript中将字符串数组映射到json对象

时间:2019-02-25 13:16:01

标签: javascript json

我有一个配置文件:

{
  "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"]
        }
}

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

1 个答案:

答案 0 :(得分:3)

因为您将变量作为键,所以您需要为该对象使用property accessor作为括号。

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));