我对使用带有对象表示法的变量有疑问。我们说我有以下代码:
let anObject = {
name: 'Joaquin',
age: 27,
occupation: 'software developer',
interests: ['walking', 'Arduino', 'working']
}
let print = 'interests[0]';
console.log(anObject.interests[0]); //prints the result
console.log(anObject.print); //prints undefined
如果我记录anObject.interests[0]
,则会打印出预期结果。但是,当我将interests[0]
存储在一个变量中并再次打印时,它并没有。
我们如何克服这个问题,为什么不打印出预期的结果?
答案 0 :(得分:0)
这不是JavaScript对象访问的工作方式。
mvn clean install
正在anObject.print
对象上寻找print
属性
它与您的anObject
变量没有无。
唯一的JavaScript本身支持使用字符串进行对象访问,方法是使用单独的属性键,例如:
print
答案 1 :(得分:0)
anObject
没有附加到对象的打印键。您正在为与该对象无关的变量分配一个简单的字符串。
可能的解决方案是:
let print = anObject.interests[0]
console.log(print)
我不知道你在做什么,所以请详细说明,以便我可以提供额外的帮助。
答案 2 :(得分:0)
您不能仅使用本机JavaScript执行此操作。唯一可行的情况是,如果您的属性字符串只包含一个prop,而不是prop[0]
。阅读道具不能通过点符号来完成。你必须使用:
obj[propString]
lib lodash具有函数_.get()
,可以在需要时执行此操作!
答案 3 :(得分:0)
每当在javascript对象中访问属性时,它都会被字符串化。 Javascript将anObject.print计算为anObject中不存在的属性,因此打印undefined。要获得所需的结果,请进行以下更正。
let anObject = {
name: 'Joaquin',
age: 27,
occupation: 'software developer',
interests: ['walking', 'Arduino', 'working']
}
let print = 'interests';
console.log(anObject.interests[0]); //prints the result
console.log(anObject[print][0]); //prints the result i.e. walking
答案 4 :(得分:0)
在javascript中我们可以访问: - 点符号 - 方括号
但只有第二种情况允许动态访问属性,但您不能直接使用索引interests[0]
指定密钥。您必须传递返回数组对象的键,然后您将访问要获取的特定索引:
let anObject = {
name: 'Joaquin',
age: 27,
occupation: 'software developer',
interests: ['walking', 'Arduino', 'working']
}
let print = 'interests';
let i = 0;
let print2 = 'age'
console.log(anObject.interests[0]); //prints the result
console.log(anObject[print]); // prints array object
console.log(anObject[print][i]); // print first value of array object
console.log(anObject[print2])

答案 5 :(得分:-1)
以下是一些示例,可以更好地了解正在发生的事情以及如何使其发挥作用:
let anObject = {
name: 'Joaquin',
age: 27,
occupation: 'software developer',
interests: ['walking', 'Arduino', 'working'],
'interests[0]': 'Hello SO !'
}
// As expected
console.log(anObject.interests[0]); //prints 'walking'
// Here you try to access the property named 'interests[0]'
let print = 'interests[0]';
console.log(anObject[print]); //prints 'Hello SO !'
// You can use eval and passing the entire expression to evaluate (Not recommended)
console.log(eval('anObject.' + 'interests[1]'));
// Better solution using Lodash
console.log(_.get(anObject, 'interests[1]'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>