我想我真的不知道怎么问这个问题让我找到答案。
所以我有三个变量可以使这个函数完成它的工作
function gatherDataForGeographic(ele) {
var $this = $(ele)
var $main_title = $this.find('.options-title'),
$option = $this.find('.option');
var arr = []
var reportAreas = reportManager.getReportAreasObject();
$option.each(function () {
var $this = $(this)
var $checkbox = $this.find('.checkbox');
var type = $this.data('type'),
index = $this.data('index');
if ($checkbox.hasClass('checkbox--checked')) {
console.log(reportAreas.type)
} else {
return true;
}
})
return arr;
}
//this will return an object that I need to index
var reportAreas = reportManager.getReportAreasObject();
//this will get the a key that i need from the object
var type = $this.data('type');
//this will give me the index I need to grab
var index = $this.data('index');
所以我要做的是根据用户选择的选项中的类型(或键)来浏览对象
问题......
它正在寻找reportArea.type[index]
并且没有将其识别为变量而且我不断获得undefined
因为.type不存在。
有没有办法让它看到该类型是变量而不是键?
答案 0 :(得分:1)
您可以使用括号语法在JS中使用动态属性,而不是点语法:
reportAreas[type]
这将解析为reportAreas['whateverString']
,相当于reportAreas.whateverString
- reportAreas.type
但是,type
属性的文字检查。
答案 1 :(得分:1)
reportArea[type][index]
JavaScript对象只是键值对,点语法只是数组符号的语法糖。
object['a']
和
object.a
基本上是一样的。