2017-09-02 67 views
1

難以在標題中解釋,但我的問題是這樣的: 我正在使用小冊子來創建地圖。有些信息會非常重複,所以我想創建變量來保存這些信息。我無法正確顯示變量連接到彼此。這可能嗎?看下面的代碼,看看我的意思。如果我輸入變量的單個數據(lat/lng),所有的代碼都可以正常工作。我只是不確定如何將somePlace變量中的數據調用到食物變量中。創建變量來保存通過另一個變量加載的信息

實施例:

var somePlace = [{ 
    "name": "name", 
    "address":"address" 
    "lat": "", 
    "lng": "", 
    }]; 

    var anotherPlace = [{ 
    "name": "name", 
    "address":"address" 
    "lat": "", 
    "lng": "", 
    }]; 

    var food = [ 
    { 
    "name": name.somePlace, 
    "address": address.somePlace, 
    "lat": lat.somePlace, 
    "lng": lng.somePlace, 
    "details": "info unique to this object" 
    },{ 
    "name": name.anotherPlace, 
    "address": address.anotherPlace, 
    "lat": lat.anotherPlace, 
    "lng": lng.anotherPlace, 
    "details": "info unique to this object" 
    } 
    ]; 

然後在主JS,該數據被稱爲在像這樣。

for (var i = 0; i < somePlace.length; ++i) { 

    var place = somePlace[i].details; 

    var sP = L.marker([somePlace[i].lat, somePlace[i].lng], { 
     icon: myIcon 
    }) 
    .bindPopup(place); 

回答

0

您的代碼存在一個誤解。看起來你想要food變量包含來自somePlaceanotherPlace的信息。

somePlaceanotherPlace陣列對象這意味着可以經由作爲somePlace[i]這樣的索引,其中i是整數(如在您已粘貼的循環所描述的)訪問他們的元件。

當你從數組,得到一個對象(例如與var myElement = somePlace[0]的第一個對象,因爲在JavaScript中數組是零索引),你就可以通過所謂點符號訪問對象的屬性

所以在你的例子,如果你想使用somePlace陣列和anotherPlace數組的第一個元素的第一個元素,形成food變量,你可以這樣做:

var food = [{ 
    "name": somePlace[0].name, 
    "address": somePlace[0].address, 
    "lat": somePlace[0].lat, 
    "lng": somePlace[0].lng, 
    "details": "info unique to this variable" 
    },{ 
    "name": anotherPlace[0].name, 
    "address": anotherPlace[0].address, 
    "lat": anotherPlace[0].lat, 
    "lng": anotherPlace[0].lng, 
    "details": "info unique to this variable" 
}]; 

的對象是關鍵 - 值對,所以例如在例如。 var foo = { name: "Mary" },name充當key,Mary作爲值並且foo是變量聲明,在這種情況下是對象。

0

如果您期望重複結構,解決此問題的一種方法是通過使用構造函數。

// constructor 
function Place(name, address, lat, lng, detail) { 
    this.name = name; 
    this.address = address; 
    this.lat = lat; 
    this.lng = lng; 
    this.detail = detail; 
} 

// declare empty array 
var food = []; 

// instance of Place 
var somePlace = new Place('The Greatest Place', '1234 Main St', '45', '-17', 'Unique detail'); 

food.push(somePlace); 

// another instance 
var anotherPlace = new Place('Another Place', '777 High St', '47', '-18', 'Another unique detail'); 

food.push(anotherPlace); 

// objects stored in your array 
console.log(food); 

// access specific object and property 
console.log(food[0].name); 
相關問題