循环中的jQuery访问对象

时间:2015-04-22 18:47:57

标签: javascript jquery

我正在尝试对我从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)))
})

当我调试并检查我正在循环的数据时,它显示正确的对象:

enter image description here

然而问题是,只要我在循环内部,我就会尝试使用this.locthis.total引用该对象,但却无法找到它。

enter image description here

在上图中,我将鼠标悬停在第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 ...

1 个答案:

答案 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中的回调函数包含indexvalue参数,您需要这些参数在循环中传递键和值。 循环在每次迭代时处理一个数组元素,因此您需要自己构建您想要获得的最终数组。