我正在尝试根据Yelp的回应构建一系列地方。但是,在推送并将我的数组传递给要返回的回调后,我最终得到了相同的4个位置,而不是4个唯一的位置。
let rawResult = arrayBusinesses.jsonBody.businesses;
let arrVenues = new Array();
// console.log(rawResult);
let venue = {
type: 'venue',
id: '',
latitude: null,
longitude: null,
title: '',
address: ''
// thumb_url: ''
};
for (let i = 0; i < 5; i++) {
console.log('i', i);
(function(j){
console.log('j' + j);
let bus = rawResult[j];
venue.type = 'venue';
venue.id = j+'a';
venue.latitude = bus.coordinates.latitude;
venue.longitude = bus.coordinates.longitude;
venue.title = bus.name;
venue.address = bus.location.address1;
arrVenues.push(venue);
})(i);
}
答案 0 :(得分:0)
你的代码很难读懂像
这样的东西const arrVenues = rawData.slice(0, 5)
.map((place, index) => (
{
type: 'venue',
id: `${index}a`,
latitude: place.coordinates.latitude,
longitude: place.coordinates.longitude,
title: place.name',
address: place.location.address,
}
));
如何回答你的问题,问题是你每次都持续推送同一个对象。当你arrVenues.push(venue)
始终是同一个对象时,字面上是相同的内存位置。因为你永远不会花时间制作一个对象的副本而只是修改属性,你最终会得到一个同一个对象的数组。