我从以下代码中得到一个奇怪的行为。以下代码来自ajax成功,和console.log(positions);
内部循环工作正常,但外面它没有给我任何东西。
success: function (data) {
var positions = [];
$.each(data, function (index, value) {
$.each(value, function (index1, value1) {
positions.push({
lat: value1.rider_location.lat,
lng: value1.rider_location.lng,
});
//This works fine | I can get the results. But after commenting out the below line then the last `console.log(positions)` doesn't shows anything.
console.log(positions);
});
});
console.log(positions);
}
来自Ajax的data
为我提供了以下结果,然后我遍历它并将值分配给positions
。
Indside循环给出了以下结果:
在循环console.log(positions)
之外没有例外,也没有结果。
答案 0 :(得分:1)
您的数据不是数组而是对象。在它上面使用$.each()
意味着它将循环遍历它的所有属性,这就是它无法按预期工作的原因。您可能想要遍历data.riders
。也没有其他数组可以循环,所以第二个循环不应该在那里:
var data = {
riders: [{
rider_location: {
lat: 2,
lng: 3
}
},
{
rider_location: {
lat: 4,
lng: 5
}
}
]
};
var positions = [];
$.each(data.riders, function(index, value) {
positions.push({
lat: value.rider_location.lat,
lng: value.rider_location.lng,
});
});
console.log(positions);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 1 :(得分:0)
鉴于返回的数据格式,我会尝试:
好像你试图用第二个循环遍历rider_location,但是rider_location是一个对象,所以你只能访问它的属性。
success: function (data) {
var positions = [];
$.each(data.riders, function (index, value) {
positions.push({
lat: value.rider_location.lat,
lng: value.rider_location.lng,
});
});
console.log(positions);
}
PS随时回复我:)