对于每个循环--->对于循环

时间:2016-06-23 01:42:20

标签: javascript for-loop

我遇到错误,指出data.forEach不是函数。代码是:

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

2 个答案:

答案 0 :(得分: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从对象的键创建一个数组。然后,您可以迭代这些键并获取关联的值。 这种方法适用于任何对象。

答案 1 :(得分:0)

data是一个对象。看起来你想要遍历该对象中的features数组,所以:

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