2015-05-26 2 views
1

Я пытаюсь отфильтровать некоторые данные JSON для поиска ролей вакансий, которые начинаются с определенной строки.Фильтрация массива, где свойство содержит строку

JSON выглядит следующим образом:

"periods": [ 
     { 
      "periodName": "Week1", 
      "teamName": "Tango", 
      "roleName": "SoftwareEngineerII", 
      "roleExperience": "2", 
      "id": "cc1f6e14-40f6-4a79-8c66-5f3e773e0929" 
     }, 
     ... 
    ] 

Я хочу, чтобы фильтровать RoleName, который начинается с «Программным обеспечением», так что я могу увидеть список всех уровней инженера-программиста, и отфильтровывает другие роли.

Я не уверен, как делать «начинается с» или «содержит» здесь.

+0

http://jsfiddle.net/jsk5awbb/ –

ответ

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();