Javascript 如何使用包含下划线的变量访问对象属性

Javascript 如何使用包含下划线的变量访问对象属性,javascript,jquery,Javascript,Jquery,我试图使用包含下划线的变量访问对象属性,但是,它的给定错误uncaughtreferenceerror:topic_u未定义。我确实研究了这个问题以寻求解决方案,但它不起作用 var topics_page_no = { topic_1: [2,3,4], topic_2: [5,6,7] } /* Navigate to particular topic's first page based on selection */ $(document).on('click', '.

我试图使用包含下划线的变量访问对象属性,但是,它的给定错误uncaughtreferenceerror:topic_u未定义。我确实研究了这个问题以寻求解决方案,但它不起作用

var topics_page_no = {
    topic_1: [2,3,4],
    topic_2: [5,6,7]
}

/* Navigate to particular topic's first page based on selection */
$(document).on('click', '.topic-menu-dropdown-item', function(){
    var topic_id = $(this).data('topic-id');
    console.log(topics_page_no.topic_[topic_id][0] + ".html");
});
预期输出:2.html/5.html

您可以这样尝试:

 /* Navigate to particular topic's first page based on selection */
$(document).on('click', '.topic-menu-dropdown-item', function () {
    var topic_id = $(this).data('topic-id');
    console.log(topics_page_no["topic_" + [topic_id]][0] + ".html");
});
/* Navigate to particular topic's first page based on selection */
$(document).on('click', '.topic-menu-dropdown-item', function () {
   var topic_id = $(this).data('topic-id');
   console.log(topics_page_no["topic_" + [topic_id]][0] + ".html");
});

您需要使用括号表示法和给出完整变量名的字符串。topics\u page\u no。topic\u[topic\u id]在topics\u page\u no上查找一个名为topic\u的属性,然后尝试查找与topic\u id匹配的属性。相反,您希望将topic\u与topic\u id合并,形成要在topics\u page\u no上查找的属性的完整名称:

因此:


可以使用如下括号表示法:

 /* Navigate to particular topic's first page based on selection */
$(document).on('click', '.topic-menu-dropdown-item', function () {
    var topic_id = $(this).data('topic-id');
    console.log(topics_page_no["topic_" + [topic_id]][0] + ".html");
});
/* Navigate to particular topic's first page based on selection */
$(document).on('click', '.topic-menu-dropdown-item', function () {
   var topic_id = $(this).data('topic-id');
   console.log(topics_page_no["topic_" + [topic_id]][0] + ".html");
});