有什么方法可以简化此代码,我很感谢任何想法。在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 +"'"
}
} );
取决于您通过简化它的确切含义。我假设您不想重复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
});
您可以创建将生成图层和layerDef的函数。下面的示例使用.reduce
方法。