簡體   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