2017-09-02 12 views
1

タイトルには説明が難しいが、私の質問は次のとおりです。 リーフレットを使用してマップを作成しています。いくつかの情報は非常に反復的なものになるので、私はその情報を保持する変数を作成したいと思います。変数を正しく表示するには、正しく接続するのに問題があります。これは可能ですか?私が何を意味するかを見るために、以下のコードを見てください。変数(緯度/経度)の個別データを入力すると、somePlace変数からfood変数にデータを呼び出す方法がわかりません。すべてのコードが正常に機能します。別の変数を使用してロードする情報を保持する変数を作成する

例:

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あなたはiは(あなたが貼り付けられてきたループに記載されているように)の整数であるようsomePlace[i]としてインデックスを介して、それらの要素にアクセスすることができることを意味するアレイのオブジェクトあります。

あなたは、配列からオブジェクトを取得し、(例えば。var myElement = somePlace[0]との第一の目的は、JavaScriptでの配列はゼロから数えるため)、あなたは、ドット表記法と呼ばれるものを介して、オブジェクトのプロパティにアクセスすることができます。

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" 
}]; 

オブジェクト:あなたはfood変数を形成するためにsomePlaceアレイとanotherPlace配列の最初の要素の最初の要素を使用したい場合は、あなたのような何かを行うことができますあなたの例ではそう

、キーと値のペアになっているので、例えば例の場合です。 var foo = { name: "Mary" },nameは、keyMaryを値として、fooを変数宣言(この場合はオブジェクト)として機能させます。

0

繰り返し構造が必要な場合は、これを解決する1つの方法はコンストラクタを使用することです。

// 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); 
関連する問題