2017-12-14 16 views
0

次のスニペットを見て、マップされたオブジェクトが空であるかどうかを確認する方法を教えてください。 基本的には、dataにヒューズの配列があるかどうか確認する必要がありますか?そうでない場合は?その後、ダイナミックアレイが空であるかどうかを確認する方法

if(e.attributes.display=='Fuses') { 
    if((e.attributes.display == 'Fuses').length == 0){ 
     console.log("No Data For Fuses"); 
    }else{ 
     fuses.push([e.geometry.x,e.geometry.y]); 
     } 
} 

var data = [{ 
 
    "displayFieldName": "", 
 
    "fieldAliases": { 
 
     "OBJECTID": "OBJECTID" 
 
    }, 
 
    "fields": [{ 
 
     "name": "OBJECTID", 
 
     "type": "esriFieldTypeOID", 
 
     "alias": "OBJECTID" 
 
    }], 
 
    "features": [{ 
 
     "attributes": { 
 
      "OBJECTID": 649 
 
     } 
 
     }, 
 
     { 
 
     "attributes": { 
 
      "OBJECTID": 665 
 
     } 
 
     }, 
 
     { 
 
     "attributes": { 
 
      "OBJECTID": 762 
 
     } 
 
     } 
 
    ] 
 
    }, 
 
    { 
 
    "displayFieldName": "", 
 
    "fieldAliases": { 
 
     "display": "display", 
 
     "OBJECTID": "OBJECTID" 
 
    }, 
 
    "geometryType": "esriGeometryPoint", 
 
    "spatialReference": { 
 
     "wkid": 4326, 
 
     "latestWkid": 4326 
 
    }, 
 
    "fields": [{ 
 
     "name": "display", 
 
     "type": "esriFieldTypeString", 
 
     "alias": "display", 
 
     "length": 50 
 
     }, 
 
     { 
 
     "name": "OBJECTID", 
 
     "type": "esriFieldTypeOID", 
 
     "alias": "OBJECTID" 
 
     } 
 
    ], 
 
    "features": [{ 
 
     "attributes": { 
 
      "display": "Transformer", 
 
      "OBJECTID": 1537 
 
     }, 
 
     "geometry": { 
 
      "x": -88.17602806699995, 
 
      "y": 41.78431233100008 
 
     } 
 
     }, 
 
     { 
 
     "attributes": { 
 
      "display": "Transformer", 
 
      "OBJECTID": 1591 
 
     }, 
 
     "geometry": { 
 
      "x": -88.17546081099994, 
 
      "y": 41.783341919000065 
 
     } 
 
     } 
 
    ] 
 
    }, 
 
    { 
 
    "displayFieldName": "", 
 
    "fieldAliases": { 
 
     "display": "display", 
 
     "OBJECTID": "OBJECTID" 
 
    }, 
 
    "geometryType": "esriGeometryPoint", 
 
    "spatialReference": { 
 
     "wkid": 4326, 
 
     "latestWkid": 4326 
 
    }, 
 
    "fields": [{ 
 
     "name": "display", 
 
     "type": "esriFieldTypeString", 
 
     "alias": "display", 
 
     "length": 50 
 
     }, 
 
     { 
 
     "name": "OBJECTID", 
 
     "type": "esriFieldTypeOID", 
 
     "alias": "OBJECTID" 
 
     } 
 
    ], 
 
    "features": [{ 
 
     "attributes": { 
 
      "display": "Service Point", 
 
      "OBJECTID": 13597 
 
     }, 
 
     "geometry": { 
 
      "x": -88.17599727899994, 
 
      "y": 41.78465526100007 
 
     } 
 
     }, 
 
     { 
 
     "attributes": { 
 
      "display": "Service Point", 
 
      "OBJECTID": 13598 
 
     }, 
 
     "geometry": { 
 
      "x": -88.17595382899998, 
 
      "y": 41.78455803400004 
 
     } 
 
     }, 
 
     { 
 
     "attributes": { 
 
      "display": "Service Point", 
 
      "OBJECTID": 13599 
 
     }, 
 
     "geometry": { 
 
      "x": -88.17582231499995, 
 
      "y": 41.78435312600004 
 
     } 
 
     }, 
 
     { 
 
     "attributes": { 
 
      "display": "Service Point", 
 
      "OBJECTID": 13600 
 
     }, 
 
     "geometry": { 
 
      "x": -88.17561004899994, 
 
      "y": 41.784005335000074 
 
     } 
 
     }, 
 
     { 
 
     "attributes": { 
 
      "display": "Service Point", 
 
      "OBJECTID": 13601 
 
     }, 
 
     "geometry": { 
 
      "x": -88.17557576699994, 
 
      "y": 41.78393182000008 
 
     } 
 
     }, 
 
     { 
 
     "attributes": { 
 
      "display": "Service Point", 
 
      "OBJECTID": 13602 
 
     }, 
 
     "geometry": { 
 
      "x": -88.17535967199996, 
 
      "y": 41.78352876900004 
 
     } 
 
     }, 
 
     { 
 
     "attributes": { 
 
      "display": "Service Point", 
 
      "OBJECTID": 13603 
 
     }, 
 
     "geometry": { 
 
      "x": -88.17534426199995, 
 
      "y": 41.78340020400003 
 
     } 
 
     }, 
 
     { 
 
     "attributes": { 
 
      "display": "Service Point", 
 
      "OBJECTID": 13649 
 
     }, 
 
     "geometry": { 
 
      "x": -88.17450698899995, 
 
      "y": 41.78350136200004 
 
     } 
 
     }, 
 
     { 
 
     "attributes": { 
 
      "display": "Service Point", 
 
      "OBJECTID": 13650 
 
     }, 
 
     "geometry": { 
 
      "x": -88.17435162999999, 
 
      "y": 41.783597986000075 
 
     } 
 
     } 
 
    ] 
 
    } 
 
]; 
 

 
transformers=[]; 
 
service_points=[]; 
 
fuses=[]; 
 

 
data.forEach(function(el) { 
 
el.features.forEach(function(e) { 
 
    if(e.attributes.display) { 
 
    if(e.attributes.display=='Transformer') { 
 
     transformers.push([e.geometry.x,e.geometry.y]); 
 
} 
 
    if(e.attributes.display=='Fuses') { 
 
    if((e.attributes.display == 'Fuses').length == 0){ 
 
     console.log("No Data For Fuses"); 
 
    }else{ 
 
     fuses.push([e.geometry.x,e.geometry.y]); 
 
     } 
 
} 
 
    if(e.attributes.display=='Service Point') { 
 
     service_points.push([e.geometry.x,e.geometry.y]); 
 
} 
 
} 
 
}); 
 
}); 
 

 
console.log(transformers,service_points, fuses);

+1

私たちのために読みやすくするためにコード/データ構造を単純化できますか?何を正確にテストしたいですか? – RaphaMex

+0

ここでは、大きなデータセットのジオメトリを属性名に基づいて異なるコレクションにロードしています。今、「ヒューズ」や「トランスフォーマー」の値がゼロになっている状況で、値がないかどうか調べる方法は? –

+0

データには 'display === 'Fuses''がありません。それはあなたがチェックしようとしているものですか? – user184994

答えて

1
他のいくつかのことを行う

配列減らす使用(ヒューズの1、サービスポイントの一つであり、変圧器のための1)のオブジェクトを構築します以下の機能、およびそれが行くようにcoordsを押してください。それが完了したら、あなたは簡単にヒューズ配列.length === 0かどうかを確認することができ、もしそうなら、あなたは、各データ要素のためのヒューズをチェックする必要がある場合は、

function process() { 
 
    data.forEach((el) => { 
 
     let arrays = el.features.reduce(function(result, feature) { 
 
      if (feature.attributes && feature.attributes.display) { 
 
       // Get the display name to use as the key for our object 
 
       let key = feature.attributes.display.replace(" ", "") 
 
       // Push the coords into the array 
 
       result[key].push([feature.geometry.x, feature.geometry.y]); 
 
      } 
 
      return result; 
 
     }, { 
 
      // Provide a default object with empty arrays 
 
      Transformer: [], 
 
      Fuses: [], 
 
      ServicePoint: [] 
 
     }); 
 

 
     console.log(arrays); 
 

 
     if (arrays.Fuses.length === 0) { 
 
      // Do what you need to here. 
 
      console.log("No fuses"); 
 
     } 
 
    }); 
 
} 
 

 
var data = [{ 
 
     "displayFieldName": "", 
 
     "fieldAliases": { 
 
      "OBJECTID": "OBJECTID" 
 
     }, 
 
     "fields": [{ 
 
      "name": "OBJECTID", 
 
      "type": "esriFieldTypeOID", 
 
      "alias": "OBJECTID" 
 
     }], 
 
     "features": [{ 
 
       "attributes": { 
 
        "OBJECTID": 649 
 
       } 
 
      }, 
 
      { 
 
       "attributes": { 
 
        "OBJECTID": 665 
 
       } 
 
      }, 
 
      { 
 
       "attributes": { 
 
        "OBJECTID": 762 
 
       } 
 
      } 
 
     ] 
 
    }, 
 
    { 
 
     "displayFieldName": "", 
 
     "fieldAliases": { 
 
      "display": "display", 
 
      "OBJECTID": "OBJECTID" 
 
     }, 
 
     "geometryType": "esriGeometryPoint", 
 
     "spatialReference": { 
 
      "wkid": 4326, 
 
      "latestWkid": 4326 
 
     }, 
 
     "fields": [{ 
 
       "name": "display", 
 
       "type": "esriFieldTypeString", 
 
       "alias": "display", 
 
       "length": 50 
 
      }, 
 
      { 
 
       "name": "OBJECTID", 
 
       "type": "esriFieldTypeOID", 
 
       "alias": "OBJECTID" 
 
      } 
 
     ], 
 
     "features": [{ 
 
       "attributes": { 
 
        "display": "Transformer", 
 
        "OBJECTID": 1537 
 
       }, 
 
       "geometry": { 
 
        "x": -88.17602806699995, 
 
        "y": 41.78431233100008 
 
       } 
 
      }, 
 
      { 
 
       "attributes": { 
 
        "display": "Transformer", 
 
        "OBJECTID": 1591 
 
       }, 
 
       "geometry": { 
 
        "x": -88.17546081099994, 
 
        "y": 41.783341919000065 
 
       } 
 
      } 
 
     ] 
 
    }, 
 
    { 
 
     "displayFieldName": "", 
 
     "fieldAliases": { 
 
      "display": "display", 
 
      "OBJECTID": "OBJECTID" 
 
     }, 
 
     "geometryType": "esriGeometryPoint", 
 
     "spatialReference": { 
 
      "wkid": 4326, 
 
      "latestWkid": 4326 
 
     }, 
 
     "fields": [{ 
 
       "name": "display", 
 
       "type": "esriFieldTypeString", 
 
       "alias": "display", 
 
       "length": 50 
 
      }, 
 
      { 
 
       "name": "OBJECTID", 
 
       "type": "esriFieldTypeOID", 
 
       "alias": "OBJECTID" 
 
      } 
 
     ], 
 
     "features": [{ 
 
       "attributes": { 
 
        "display": "Service Point", 
 
        "OBJECTID": 13597 
 
       }, 
 
       "geometry": { 
 
        "x": -88.17599727899994, 
 
        "y": 41.78465526100007 
 
       } 
 
      }, 
 
      { 
 
       "attributes": { 
 
        "display": "Service Point", 
 
        "OBJECTID": 13598 
 
       }, 
 
       "geometry": { 
 
        "x": -88.17595382899998, 
 
        "y": 41.78455803400004 
 
       } 
 
      }, 
 
      { 
 
       "attributes": { 
 
        "display": "Service Point", 
 
        "OBJECTID": 13599 
 
       }, 
 
       "geometry": { 
 
        "x": -88.17582231499995, 
 
        "y": 41.78435312600004 
 
       } 
 
      }, 
 
      { 
 
       "attributes": { 
 
        "display": "Service Point", 
 
        "OBJECTID": 13600 
 
       }, 
 
       "geometry": { 
 
        "x": -88.17561004899994, 
 
        "y": 41.784005335000074 
 
       } 
 
      }, 
 
      { 
 
       "attributes": { 
 
        "display": "Service Point", 
 
        "OBJECTID": 13601 
 
       }, 
 
       "geometry": { 
 
        "x": -88.17557576699994, 
 
        "y": 41.78393182000008 
 
       } 
 
      }, 
 
      { 
 
       "attributes": { 
 
        "display": "Service Point", 
 
        "OBJECTID": 13602 
 
       }, 
 
       "geometry": { 
 
        "x": -88.17535967199996, 
 
        "y": 41.78352876900004 
 
       } 
 
      }, 
 
      { 
 
       "attributes": { 
 
        "display": "Service Point", 
 
        "OBJECTID": 13603 
 
       }, 
 
       "geometry": { 
 
        "x": -88.17534426199995, 
 
        "y": 41.78340020400003 
 
       } 
 
      }, 
 
      { 
 
       "attributes": { 
 
        "display": "Service Point", 
 
        "OBJECTID": 13649 
 
       }, 
 
       "geometry": { 
 
        "x": -88.17450698899995, 
 
        "y": 41.78350136200004 
 
       } 
 
      }, 
 
      { 
 
       "attributes": { 
 
        "display": "Service Point", 
 
        "OBJECTID": 13650 
 
       }, 
 
       "geometry": { 
 
        "x": -88.17435162999999, 
 
        "y": 41.783597986000075 
 
       } 
 
      } 
 
     ] 
 
    } 
 
]; 
 

 

 
process();

1

に必要なものを行います以下のようにすることができます

data.forEach(function(el) { 
    var hasFuses = el.features.some((e) => e.attributes.display === 'Fuses'); 
    console.log('has: ' + hasFuses); 

    el.features.forEach(function(e) { 
    if (!hasFuses) { 
     console.log("No Data For Fuses"); 
    } 
    switch (e.attributes.display) { 
     case 'Transformer': 
     transformers.push([e.geometry.x, e.geometry.y]); 
     break; 
     case 'Fuses': 
     fuses.push([e.geometry.x, e.geometry.y]); 
     break; 
     case 'Service Point': 
     service_points.push([e.geometry.x, e.geometry.y]); 
     break; 
    } 
    }); 
}); 

console.log(transformers, service_points, fuses); 
関連する問題