我正在尝试对我从json文件中获取的对象执行一个非常基本的循环:
// Look in the json file and loop over the data we need for this chart
$.each(jsonResponse.data.escalationsSubmittedByLocation.dataset, function() {
tempData.push(Array(this.loc, parseInt(this.total)))
})
当我调试并检查我正在循环的数据时,它显示正确的对象:
然而问题是,只要我在循环内部,我就会尝试使用this.loc
或this.total
引用该对象,但却无法找到它。
在上图中,我将鼠标悬停在第676行,这是我正在循环的数据对象。如您所见,它是一个包含total和loc的对象。
但是,当您查看我正在调试的行时,this
将值称为字符串或其他内容。
当对象明显存在时,为什么我无法访问我正在循环的对象中的值?
其他详细信息:
// When called, we render the charts based on the json file that was created
function doRender() {
$.getJSON(jsonFile, function(data) {
jsonResponse = data;
tempData.length = 0;
// Look in the json file and loop over the data we need for this chart
$.each(jsonResponse.data.escalationTypes.dataset, function() {
tempData.push(Array(this.reason, parseInt(this.total)))
})
... Chart Uses the Array Data Here ...
答案 0 :(得分:0)
这应该有效(并且它适用于jsfiddle):
obj = {"total" : "foo", "loc" : "bar"};
tempData = [];
tempLoop = [];
$.each(obj, function(index, value) {
tempLoop[index] = value;
if (index === "loc") {
tempData.push(tempLoop);
}
})
console.log(tempData);
$.each
中的回调函数包含index
和value
参数,您需要这些参数在循环中传递键和值。
循环在每次迭代时处理一个数组元素,因此您需要自己构建您想要获得的最终数组。