hiiii我正在创建一个应用程序, 我从url获取一个访问对象属性的路径,路径是字符串,我保存在变量中, 我的意思是这个代码,例如:
但它错了并抛出错误......任何身体都可以帮助我吗? 如果有人帮助我,我真的很感激。谢谢:))
var object = {
music:{
test:"",
test2:""
},
video:{
test:"",
test2:""
},
pic:{
test:"",
test2:""
},
photosUsers:{
test:"",
test2:""
}
}
var path = "music.test.test2";
var item = object.path
答案 0 :(得分:2)
这里有一些问题。
首先,对象属性是字符串,但是你不能只使用点分隔的路径来访问这样的嵌套结构。至少不是原生的。但是有这个库。例如,我是dangit的作者,其namespace()
函数可以帮助您完成此操作。
var item = dangit.namespace(object, 'music.test.test2');
其次,即使JavaScript支持这样的路径表示法,它也可能像这样工作。
var path = 'music.test.test2';
var item = object[path];
那是因为object.path
和object[path]
是非常不同的事情,并且存在重要的差异。即使你有一个path
变量,object.path
也不会使用它,因为你要求的是一个名为path
的属性,而object[path]
会获得一个名为{1}}的属性。 path
变量是。
第三,您提供的数据结构中不存在object.music.test.test2
。使用console.log()
了解相关信息。
console.log('music:', object.music);
console.log('music.test:', object.music.test);
在您的示例中,object.music.test
是String。由于字符串不具有名为test2
的属性,因此尝试访问它将返回undefined
。
答案 1 :(得分:1)
试试这个:
var path_array = path.split('.');
var item = object;
for (int i = 0; i < path_array.length; i++) {
item = item[path_array[i]];
}
答案 2 :(得分:0)
var object = {music : {test : "" , test2 : ""},video : {test : "" , test2 : ""},pic: {test : "" , test2 : ""},photosUsers: {test : "" , test2 : ""}}
//Associate the path variable to the object
object.path = "music.test.test2";
var item = object.path;