如何存储对象路径

时间:2018-05-01 17:04:18

标签: javascript javascript-objects

我正在尝试将Object路径存储到变量中。但不行。有人帮我吗?

这是我的尝试:

var object = {"india": { "chennai" : {"sholing":"hi"}}};

var path = ['india']['chennai']['sholing'];

console.log( object.india.chennai ); //works

console.log( object[path] ); //not works

Live Demo

2 个答案:

答案 0 :(得分:2)

您需要通过括号表示法引用每个属性。因此,object[path]将不起作用(正如@Crazy Train指出的那样,您的调试应该向您显示您的var path = ...会抛出错误),但是如果您有一组路径,例如{{1}然后你可以使用它们来访问像let path = ['india', 'chennai', 'sholing']这样的深层属性。

使用实用程序助手为您执行此操作可能会好得多,例如Lodash的toPathget函数:

object[path[0]][path[1]][path[2]]

见其他答案:

答案 1 :(得分:2)

你可以使用一个数组作为键,一个函数通过使用属性访问的键来减少对象。

const getValue = (object, path) => path.reduce((r, k) => (r || {})[k], object);

var object = { india: { chennai: { sholing: "hi" } } },
    path = ['india', 'chennai', 'sholing'];

console.log(object.india.chennai );
console.log(getValue(object, path));