如何从变量打印对象表示法

时间:2017-12-21 07:43:50

标签: javascript variables object printing

我对使用带有对象表示法的变量有疑问。我们说我有以下代码:

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]存储在一个变量中并再次打印时,它并没有。

我们如何克服这个问题,为什么不打印出预期的结果?

6 个答案:

答案 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>