【问题标题】:How to access a nested object inside another object in javascript?如何在javascript中访问另一个对象内的嵌套对象?
【发布时间】:2019-07-23 08:27:34
【问题描述】:

我正在使用 Vue.js,并且我有一个想要动态访问属性的数据对象。但我似乎无法动态访问过滤器对象的属性。

export export default {
    template: ``,
    data() {
        return {
            something: 'This is some value.',
            filters: {
                fullSearch: 'This is full search.'
            }
        }
    }
}

我可以访问“某物”,但无法动态访问 filters.fullSearch。

这行得通

console.log(this['something']) // This is some value.

但这不起作用

console.log(this['filters.fullSearch']) // Component.js:589 undefined

这是完整的代码。我正在遍历 this.$route.query 的所有属性,并将它们分配给我的数据中的过滤器,就像这样。但它不起作用。我做错了什么?

for (let [key, value] of Object.entries(this.$route.query)) {
    if (this['filters.' + key] !== undefined) {
        this['filters.' + key] = value
    }
}

【问题讨论】:

标签: javascript object vue.js vue-router


【解决方案1】:

你需要用正确的property accessor来寻址内部对象。

this['filters']['fullSearch']

或具有静态属性

this.filters.fullSearch

【讨论】:

  • 第一个给出 - 语法错误:Uncaught SyntaxError: Unexpected identifier
  • 你试过this['filters']['fullSearch']吗?将键作为括号中的字符串?
【解决方案2】:

应该是

console.log(this['filters']['fullSearch'])

console.log(this['filters'].fullSearch)

console.log(this.filters.fullSearch)

【讨论】:

  • 第一个给出语法错误:Uncaught SyntaxError: Unexpected identifier
  • 那是因为你的字符串末尾没有'(单引号)。
【解决方案3】:

您混合了点和括号表示法。以下解决方案将起作用。

for (let [key, value] of Object.entries(this.$route.query)) {
    if (this['filters'][key] !== undefined) {
        this['filters'][key] = value
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多