在JavaScript代码中简化相似的对象文字

问题描述 投票:0回答:2

有什么方法可以简化此代码,我很感谢任何想法。在lyerDefs中,从1到11的所有对象的值都相同。

spider = L.esri.dynamicMapLayer({
    url:API,
    layers:[1,2,3,4,5,6,7,8,9,10,11],
    layerDefs:{ // how to simplify following code?

      1:  "Site_id ='"+ activeSiteId +"'",
      2:  "Site_id ='" + activeSiteId +"'",
      3:  "Site_id ='"+ activeSiteId +"'",
      4:  "Site_id ='"+ activeSiteId +"'",
      5:  "Site_id ='"+ activeSiteId +"'",
      6:  "Site_id ='"+ activeSiteId +"'",
      7:  "Site_id ='"+ activeSiteId +"'",
      8:  "Site_id ='"+ activeSiteId +"'",
      9:  "Site_id ='"+ activeSiteId +"'",
      10:  "Site_id ='"+ activeSiteId +"'",
      11:  "Site_id ='"+ activeSiteId +"'"

    }
  } );
javascript leaflet esri
2个回答
0
投票

取决于您通过简化它的确切含义。我假设您不想重复11次“ Site_id ='“ + activeSiteId +”'“”字符串。如果仅此而已,那么就应该这样做:

var layers = [];
var layerDefs = {};
for(i = 1; i < 12; i++) {
  layers.push(i);
  layerDefs[i] = "Site_id = '" + activeSiteId + "'";
}
spider = L.esri.dynamicMapLayer({
  url:API,
  layers: layers,
  layerDefs: layerDefs
});

0
投票

您可以创建将生成图层和layerDef的函数。下面的示例使用.reduce方法。

© www.soinside.com 2019 - 2024. All rights reserved.