我想用我通过ajax调用检索的数据创建一个对象。 问题是,我每次 ajax 调用都会调用我的函数,它会生成一个包含 1 个条目的数组 * 我的 10 个文件,但我想要 1 个包含 10 个条目的数组。
function mapXML(data) {
for (let i = 0; i < data.length; i++) {
let maps = 'maps/' + data[i];
$.ajax({
url: maps,
type: "GET",
datatype: "xml",
success: function(xml) {
traitementCarte(xml)
}
});
}
}
function traitementCarte(xml) {
console.log(xml)
let lat = [],
lng = [],
test = [];
var lastElementLat,
lastElementLng;
$(xml).find('trkpt').each(function(i, el) {
lat[i] = parseFloat($(this).attr('lat'));
lng[i] = parseFloat($(this).attr('lon'))
});
lastElementLat = lat[lat.length - 1];
lastElementLng = lng[lng.length - 1];
let locations = {
lat: lastElementLat,
lon: lastElementLng
};
test.push(locations);
console.log(test)
}
我的问题没有解决方案。 谢谢
最佳答案
您需要在 traitementCarte()
函数外部声明数组变量,否则每次调用它时都会创建一个新数组。
var test = [];
function traitementCarte(xml) {
console.log(xml)
let lat = [],
lng = [];
var lastElementLat,
lastElementLng;
$(xml).find('trkpt').each(function(i, el) {
lat[i] = parseFloat($(this).attr('lat'));
lng[i] = parseFloat($(this).attr('lon'))
});
lastElementLat = lat[lat.length - 1];
lastElementLng = lng[lng.length - 1];
let locations = {
lat: lastElementLat,
lon: lastElementLng
};
test.push(locations);
console.log(test)
}
关于javascript - Ajax调用,创建数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44057577/