Фильтрующий массив, где свойство содержит строку
Я пытаюсь отфильтровать некоторые данные JSON для поиска рабочих ролей, начинающихся с определенной строки.
JSON выглядит так:
"periods": [
{
"periodName": "Week1",
"teamName": "Tango",
"roleName": "SoftwareEngineerII",
"roleExperience": "2",
"id": "cc1f6e14-40f6-4a79-8c66-5f3e773e0929"
},
...
]
Я хочу отфильтровать для roleName, который начинается с "Software", чтобы я мог видеть список всех уровней Software Engineer и отфильтровывать другие роли.
Я не уверен, как сделать "начинается с" или "содержит" здесь.
1 ответ
Решение
Вы пытаетесь отфильтровать массив, в котором одно из свойств строки содержит значение... Как еще вы можете проверить, содержит ли строка другую строку?
Вы можете использовать регулярное выражение:
var str = 'SoftwareEngineerII';
if (str.match(/^software/i)) {
// it starts with 'software'
}
Поэтому вам нужно преобразовать это в предикат, который может быть использован в вашем фильтре.
var query = Enumerable.From(data.periods)
.Where("!!$.roleName.match(/^software/i)")
.ToArray();