Как правильно применить фильтр подстроки к массиву Json в d3 - PullRequest
0 голосов
/ 05 августа 2020
• 1000 Это мой подход:
function startsWith(str, word) {
  return str.lastIndexOf(word, 0) === 0;
}
function filterData() {
  input = document.getElementById('filterInput');
  filterString = input.value;
  
  
  var filteredData = stackedChartData.filter(function (entry) {
        entry.values.forEach(element => {
        
         return startsWith(element.label,filterString);
            
        }); 
  });

 console.log(filteredData,"filteredData");
  
}

Поскольку String.startsWith () не работал должным образом, я использовал в коде startWith (). FilterString - это то, что должно быть, а element.label относится к правильному свойству моего файла json, например, PWY-6089. Однако FilteredData остается пустым. Я не понимаю, что я здесь делаю не так, и был бы признателен за помощь, с уважением.

1 Ответ

0 голосов
/ 05 августа 2020

Проблема

Для l oop просто повторяется, ничего не возвращает

Решение

Чтобы получить отфильтрованные данные, вы можете использовать filter и find в методах массива

Description (ниже пример фрагмента)

  1. фильтр - из 3 объектов мне нужно получить 2
  2. find - немедленно возвращается, когда выполняется условие startWith

см. Фрагмент кода ниже

let data = [{
    "key": "FirstGroup",
    "color": "#1f77b4",
    "values": [{
        "label": "PWY-6089",
        "value": 0
      },
      {
        "label": "TOLSULFDEG-PWY",
        "value": 0
      }
    ]
  },
  {
    "key": "SecondGroup",
    "color": "#78bf00",
    "values": [{
        "label": "PWY-4101",
        "value": 0.3
      },
      {
        "label": "PWY0-1356",
        "value": 0.5
      }
    ]
  },
  {
    "key": "ThirdGroup",
    "color": "#d62728",
    "values": [{
        "label": "PWY-4101",
        "value": 1
      },
      {
        "label": "PWY0-1356",
        "value": 1
      }
    ]
  }
]

let filteredData = data.filter(datumn =>
  datumn.values.find(valueDatumn =>
    valueDatumn.label.startsWith('PWY-41') // for example, here you can pass the string from the user
  )
)

console.log(filteredData)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...