创建一个变量来保存通过另一个变量加载的信息

时间:2017-09-02 21:25:35

标签: javascript leaflet

很难在标题中解释,但我的问题是: 我正在使用传单创建一个地图。有些信息会非常重复,所以我想创建变量来保存这些信息。虽然要正确显示,但我无法正确连接变量。这可能吗?看下面的代码,看看我的意思。如果我输入变量的单个数据(纬度/经度),所有代码都可以正常工作我不知道如何将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);

2 个答案:

答案 0 :(得分:0)

您的代码存在误解。您希望food变量包含来自somePlaceanotherPlace的信息。

somePlaceanotherPlace对象的数组 ,这意味着您可以通过somePlace[i]之类的索引访问其元素其中i是一个整数(如您已粘贴的循环中所述)。

当您从数组中获取对象时(例如,带有var myElement = somePlace[0]的第一个对象,因为JavaScript中的数组被归零),您可以访问该对象&#39; s 属性通过所谓的点表示法。

因此,在您的示例中,如果您想使用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充当keyMary作为值,foo是变量声明,在本例中是对象。

答案 1 :(得分: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);