Отфильтровать часть текстовой строки, которая не существует в JavaScript - PullRequest
0 голосов
/ 03 октября 2018

У меня есть свойства в файле многоугольника geojson, которые являются рабочими днями в различных сочетаниях, таких как: Пн-Пт или Вт-Пт или Вт, Ср, Пт или Пн, Чт или Ср-Пт и т. Д.

Мне нужно показать полигоны в Leaflet, которые не имеют значения «Mon» (понедельник) в текстовой строке.Как я могу отфильтровать это?Я использую этот код для других фильтров ...

var non_mon = new L.layerGroup();
$.getJSON("..data/polygons.geojson", function(json) {
 var vectorGrid =  L.vectorGrid.slicer(json, {
                  maxZoom: 20,
                  rendererFactory: L.svg.tile,
                  vectorTileLayerStyles: {
                      sliced: function(properties, zoom){
                      var dayint = properties.Days_1

                      if (dayint = "does not have Mån" ){
                        return{
                      weight: 0.5,
                      color: '#ffffff',
                      opacity: 1,
                      fill: true,
                      fillColor: '#ff0000',
                      stroke: true,
                      fillOpacity: 0.6
                      }
                      } else {
                      return {
                      weight: 0,
                      fill: false,
                      stroke: false    
                      }
                     }
                     }},
                     interactive: true,
                   })
     .on('click', function(e) {
  var properties = e.layer.properties;
  L.popup()
    .setContent(
      "<b>Weekdays</b>" + '\xa0\xa0' + properties.Days_1 + '</b>' +
      "<br>Date from: " + '<i>' + properties.Date + '</i>' )
    .setLatLng(e.latlng)
    .openOn(map);
                   })
vectorGrid.addTo(non_mon)

            }) 

Вот так выглядит GeoJSON

{ "type": "Feature", "properties": { "Days_1": "Mån-Fre" },
{ "type": "Feature", "properties": { "Days_1": "Tis-Fre" },
{ "type": "Feature", "properties": { "Days_1": "Ons-Fre" },
{ "type": "Feature", "properties": { "Days_1": "Tors,Fre" },
{ "type": "Feature", "properties": { "Days_1": "Mån,Ons,Fre" },
{ "type": "Feature", "properties": { "Days_1": "Tis,Ons-Fre" },
{ "type": "Feature", "properties": { "Days_1": "Ons,Tors" },
{ "type": "Feature", "properties": { "Days_1": "Mån" },
{ "type": "Feature", "properties": { "Days_1": "Tis" },
{ "type": "Feature", "properties": { "Days_1": "Ons" },
{ "type": "Feature", "properties": { "Days_1": "Tors" },
{ "type": "Feature", "properties": { "Days_1": "Fre" },
{ "type": "Feature", "properties": { "Days_1": "Tis-Tors" },
{ "type": "Feature", "properties": { "Days_1": "Mån-Tors" },
{ "type": "Feature", "properties": { "Days_1": "Ons,Fre" },
{ "type": "Feature", "properties": { "Days_1": null },

1 Ответ

0 голосов
/ 03 октября 2018

Хорошо, поэтому вы хотите отфильтровать все строки, для которых свойство «Days_1» не содержит строку «Mån».Вы можете сделать это следующим образом:

var geoJson = [...]; // Your GeoJSON

// After this function call 'filtered' contains the filtered list of GeoJSON features
var filtered = geoJson.filter(
    function(element) {
        // We are only interested in elements which do not contain 'Mån'
        return element.indexOf("Mån") != -1;
    }
);

В этом примере мы используем часть метода filter в прототипе массива.Метод filter вызовет переданную функцию для каждого элемента в массиве.Затем вы можете вернуть true, чтобы сохранить элемент, или false, чтобы отфильтровать элемент.Окончательный результат будет возвращен в виде нового массива.

...