繁体   English   中英

为什么我将同一个对象放入数组?

[英]Why am I getting the same object pushed into my array?

我正在尝试根据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);
    }

您的代码很难看懂

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) ,始终是同一对象,实际上是相同的内存位置。 由于您从不花时间来复制对象,而只需修改属性,您最终会得到同一对象的数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM