# @turf/meta # coordEach Iterate over coordinates in any GeoJSON object, similar to Array.forEach() **Parameters** - `layer` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** any GeoJSON object - `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** a method that takes (currentCoords, currentIndex) - `excludeWrapCoord` **\[[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)]** whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration. (optional, default `false`) **Examples** ```javascript var features = { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [26, 37] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [36, 53] } } ] }; turf.coordEach(features, function (currentCoords, currentIndex) { //=currentCoords //=currentIndex }); ``` # coordReduce Reduce coordinates in any GeoJSON object, similar to Array.reduce() **Parameters** - `layer` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** any GeoJSON object - `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** a method that takes (previousValue, currentCoords, currentIndex) - `initialValue` **\[Any]** Value to use as the first argument to the first call of the callback. - `excludeWrapCoord` **\[[boolean](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)]** whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration. (optional, default `false`) **Examples** ```javascript var features = { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [26, 37] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [36, 53] } } ] }; turf.coordReduce(features, function (previousValue, currentCoords, currentIndex) { //=previousValue //=currentCoords //=currentIndex return currentCoords; }); ``` Returns **Any** The value that results from the reduction. # propEach Iterate over properties in any GeoJSON object, similar to Array.forEach() **Parameters** - `layer` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** any GeoJSON object - `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** a method that takes (currentProperties, currentIndex) **Examples** ```javascript var features = { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {"foo": "bar"}, "geometry": { "type": "Point", "coordinates": [26, 37] } }, { "type": "Feature", "properties": {"hello": "world"}, "geometry": { "type": "Point", "coordinates": [36, 53] } } ] }; turf.propEach(features, function (currentProperties, currentIndex) { //=currentProperties //=currentIndex }); ``` # propReduce Reduce properties in any GeoJSON object into a single value, similar to how Array.reduce works. However, in this case we lazily run the reduction, so an array of all properties is unnecessary. **Parameters** - `layer` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** any GeoJSON object - `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** a method that takes (previousValue, currentProperties, currentIndex) - `initialValue` **\[Any]** Value to use as the first argument to the first call of the callback. **Examples** ```javascript var features = { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {"foo": "bar"}, "geometry": { "type": "Point", "coordinates": [26, 37] } }, { "type": "Feature", "properties": {"hello": "world"}, "geometry": { "type": "Point", "coordinates": [36, 53] } } ] }; turf.propReduce(features, function (previousValue, currentProperties, currentIndex) { //=previousValue //=currentProperties //=currentIndex return currentProperties }); ``` Returns **Any** The value that results from the reduction. # featureEach Iterate over features in any GeoJSON object, similar to Array.forEach. **Parameters** - `layer` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** any GeoJSON object - `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** a method that takes (currentFeature, currentIndex) **Examples** ```javascript var features = { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [26, 37] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [36, 53] } } ] }; turf.featureEach(features, function (currentFeature, currentIndex) { //=currentFeature //=currentIndex }); ``` # featureReduce Reduce features in any GeoJSON object, similar to Array.reduce(). **Parameters** - `layer` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** any GeoJSON object - `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** a method that takes (previousValue, currentFeature, currentIndex) - `initialValue` **\[Any]** Value to use as the first argument to the first call of the callback. **Examples** ```javascript var features = { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {"foo": "bar"}, "geometry": { "type": "Point", "coordinates": [26, 37] } }, { "type": "Feature", "properties": {"hello": "world"}, "geometry": { "type": "Point", "coordinates": [36, 53] } } ] }; turf.featureReduce(features, function (previousValue, currentFeature, currentIndex) { //=previousValue //=currentFeature //=currentIndex return currentFeature }); ``` Returns **Any** The value that results from the reduction. # coordAll Get all coordinates from any GeoJSON object. **Parameters** - `layer` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** any GeoJSON object **Examples** ```javascript var features = { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [26, 37] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [36, 53] } } ] }; var coords = turf.coordAll(features); //=coords ``` Returns **[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)<[number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)>>** coordinate position array # geomEach Iterate over each geometry in any GeoJSON object, similar to Array.forEach() **Parameters** - `layer` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** any GeoJSON object - `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** a method that takes (currentGeometry, currentIndex) **Examples** ```javascript var features = { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [26, 37] } }, { "type": "Feature", "properties": {}, "geometry": { "type": "Point", "coordinates": [36, 53] } } ] }; turf.geomEach(features, function (currentGeometry, currentIndex) { //=currentGeometry //=currentIndex }); ``` # geomReduce Reduce geometry in any GeoJSON object, similar to Array.reduce(). **Parameters** - `layer` **[Object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object)** any GeoJSON object - `callback` **[Function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/function)** a method that takes (previousValue, currentGeometry, currentIndex) - `initialValue` **\[Any]** Value to use as the first argument to the first call of the callback. **Examples** ```javascript var features = { "type": "FeatureCollection", "features": [ { "type": "Feature", "properties": {"foo": "bar"}, "geometry": { "type": "Point", "coordinates": [26, 37] } }, { "type": "Feature", "properties": {"hello": "world"}, "geometry": { "type": "Point", "coordinates": [36, 53] } } ] }; turf.geomReduce(features, function (previousValue, currentGeometry, currentIndex) { //=previousValue //=currentGeometry //=currentIndex return currentGeometry }); ``` Returns **Any** The value that results from the reduction. --- This module is part of the [Turfjs project](http://turfjs.org/), an open source module collection dedicated to geographic algorithms. It is maintained in the [Turfjs/turf](https://github.com/Turfjs/turf) repository, where you can create PRs and issues. ### Installation Install this module individually: ```sh $ npm install @turf/meta ``` Or install the Turf module that includes it as a function: ```sh $ npm install @turf/turf ```