如何从字符串变量访问对象属性
how to access from an string variable to object properties
hiiii im正在创建应用程序,我从url获得一个访问对象属性的路径,路径是字符串,我保存在变量中,我的意思是像这样的代码,例如:
但这是错误的,并抛出一个错误。。。有人能帮我吗?如果有人帮我,我将不胜感激。谢谢:)
var object = {
music:{
test:"",
test2:""
},
video:{
test:"",
test2:""
},
pic:{
test:"",
test2:""
},
photosUsers:{
test:"",
test2:""
}
}
var path = "music.test.test2";
var item = object.path
这里有一些问题。
首先,对象属性是字符串,但不能只使用点分隔路径来访问这样的嵌套结构。至少不是天生的。但也有这样的图书馆。例如,我是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]
会得到一个无论path
变量的值是多少都命名的属性。
第三,object.music.test.test2
不存在于您提供的数据结构中。使用console.log()
了解这一点。
console.log('music:', object.music);
console.log('music.test:', object.music.test);
在您的示例中,object.music.test
是一个字符串。由于字符串没有名为test2
的属性,尝试访问它将返回undefined
。
试试这个:
var path_array = path.split('.');
var item = object;
for (int i = 0; i < path_array.length; i++) {
item = item[path_array[i]];
}
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;
相关文章:
- 如何访问对象内部的“categoryIds”字段/键,该对象包含mongodb's `ObjectId(s)`数
- 使用js或extjs访问对象的java列表
- Javascript-访问对象
- 访问对象的最简单方法'的单独财产
- 分析云代码访问对象
- 如何从字符串变量访问对象属性
- 访问对象中的数组
- 如何访问对象's成员通过另一种方法填充的方法
- 访问对象内的数组
- 是否可以在定义对象时访问对象值
- Javascript 无法访问对象的属性
- $.each 中的“this”,当需要使用“this”访问对象的函数时
- 函数中的 angularJS 访问对象属性不起作用
- 通过存储在变量中的名称访问对象
- 访问对象内部的数组
- 如何从类函数内部访问对象属性
- 访问对象和指定变量
- Javascript - 使用 for 时遇到问题.以循环访问对象
- 为什么可以在内部函数成员中访问对象引用,而不能在内部属性成员中访问
- 当对象的键中有冒号时,如何访问对象属性