var _this=this;
var n = _this.data.markers.length;
for (var i = 0; i < app.globalData.szArray.length; i++) {
_this.setData({
'markersObj.id': n + i,
'markersObj.longitude': app.globalData.szArray[i].longitude,
'markersObj.latitude': app.globalData.szArray[i].latitude,
'markersObj.iconPath': "../../images/8.png",
'markersObj.callout.content': "失物招领",
'markersObj.callout.color': "#FF3333",
})
app.globalData.markerArray.push(_this.data.markersObj);
console.log("里" + app.globalData.markerArray[i].latitude)
}
console.log("外" + app.globalData.markerArray[0].latitude + " " + app.globalData.markerArray[1].latitude)
打印出来的值循环内markerArray数组的第一个元素和第二个元素值不一样,但循环外markerArray数组的第一个元素和第二个元素值就一样了,为什么呢?那个好心人帮我解决一下这个问题,非常感谢!!!
var i 改成 let i 试试
const app = getApp()
Page({
data: {
markersObj: {
id: null,
longitude: null,
latitude: null,
},
markers:[]
},
createMarker: function () {
var _this = this;
var n = _this.data.markers.length;
if (app.globalData.markerArray.length != app.globalData.szArray.length) {
for (let i = 0; i < app.globalData.szArray.length; i++) {
_this.setData({
'markersObj.id': n + i,
'markersObj.longitude': app.globalData.szArray[i].longitude,
'markersObj.latitude': app.globalData.szArray[i].latitude,
})
app.globalData.markerArray.push(_this.data.markersObj);
console.log("里" + app.globalData.markerArray[i].latitude)
}
console.log("外" + app.globalData.markerArray[0].latitude + " " + app.globalData.markerArray[1].latitude)
var a = _this.data.markers.concat(app.globalData.markerArray);
_this.setData({ markers: a })
}
},
onShow(){
var that=this;
setTimeout(function () {
that.createMarker();
}, 1000)
}
})
app.js:
globalData: {
markerArray: [],
szArray: [
{
id:0,
longitude:104,
latitude:34
},
{
id:1,
longitude: 105,
latitude: 35
}
],
}
循环内的值不一样,循环外就一样了,这是什么原理