Фильтрующий массив, где свойство содержит строку

Я пытаюсь отфильтровать некоторые данные 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();
Другие вопросы по тегам