我正在尝试将Object路径存储到变量中。但不行。有人帮我吗?
这是我的尝试:
var object = {"india": { "chennai" : {"sholing":"hi"}}};
var path = ['india']['chennai']['sholing'];
console.log( object.india.chennai ); //works
console.log( object[path] ); //not works
答案 0 :(得分:2)
您需要通过括号表示法引用每个属性。因此,object[path]
将不起作用(正如@Crazy Train指出的那样,您的调试应该向您显示您的var path = ...
会抛出错误),但是如果您有一组路径,例如{{1}然后你可以使用它们来访问像let path = ['india', 'chennai', 'sholing']
这样的深层属性。
使用实用程序助手为您执行此操作可能会好得多,例如Lodash的toPath和get函数:
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));