2016-06-23 240 views
-4

我有一個錯誤,指出data.forEach不是一個函數。該代碼是:對於每個循環---> For循環

function getProperGeojsonFormat(data) { 
    isoGeojson = {"type": "FeatureCollection", "features": []}; 

    console.log("After getProperGeojsonFormat function") 
    console.log(data) 
    console.log("") 

    data.forEach(function(element, index) { 
     isoGeojson.features[index] = {}; 
     isoGeojson.features[index].type = 'Feature'; 
     isoGeojson.features[index].properties = element.properties; 
     isoGeojson.features[index].geometry = {}; 
     isoGeojson.features[index].geometry.coordinates = []; 
     isoGeojson.features[index].geometry.type = 'MultiPolygon'; 

     element.geometry.geometries.forEach(function(el) { 
      isoGeojson.features[index].geometry.coordinates.push(el.coordinates); 
     }); 
    }); 
    $rootScope.$broadcast('isochrones', {isoGeom: isoGeojson}); 



} 

我得到的錯誤是:

enter image description here

當我控制檯日誌數據:

When I console log data

+4

這取決於數據是否是一個數組與否。 –

+1

a [mcve]會很棒! –

+1

他們已經幫你 – zerkms

回答

0

data是一個對象。它看起來像要遍歷該對象中的features陣列,這樣做:

data.features.forEach(function(element, index) { 
    isoGeojson.features[index] = { 
     type: 'Feature', 
     properties: element.properties, 
     geometry: { 
      type: 'MultiPolygon', 
      coordinates: element.coordinates.slice() 
     }    
    } 
}); 
+0

感謝您提示更改data.features.forEach。現在我遇到了下一個問題,每個 –

+0

道歉,但它回到那裏 –

+0

不要回答這個問題。我已經回覆了原來的問題。 – Barmar

0

forEach陣列上的作品,而不是對象。這裏似乎是data是一個對象。

改爲使用它。

Object.keys(data).forEach(function(index) { 
    var element = data[index]; 
    isoGeojson.features[index] = {}; 
    isoGeojson.features[index].type = 'Feature'; 
    isoGeojson.features[index].properties = element.properties; 
    isoGeojson.features[index].geometry = {}; 
    isoGeojson.features[index].geometry.coordinates = []; 
    isoGeojson.features[index].geometry.type = 'MultiPolygon'; 

    element.geometry.geometries.forEach(function(el) { 
     isoGeojson.features[index].geometry.coordinates.push(el.coordinates); 
    }); 
}); 

Object.keys從對象的鍵創建數組。然後您可以迭代這些鍵並獲取關聯的值。 這種方法適用於任何物體。