Skip to content
Grigoriev Oleg edited this page Mar 24, 2013 · 2 revisions

go.Lang.filter(): фильтрация структуры

filter(items, criterion [, context])

  • item {(Array|Object)} - фильтруемый список или словарь
  • criterion {(Function|String)} - критерий фильтрации. Функция, вызываемая для каждого элемента или имя поля в этих элементах.
  • context {Object} - объект, в контексте которого вызывается criterion.
  • :return {(Array|Object)} - результат фильтрации с сохранением изначальной структуры.

Например, есть следующая структура:

var dict = {
    'one': {
        'x': 1,
        'y': 5
    },
    
    'none': {
        'x': 0,
        'y': 2
    },
    
    'five': {
        'x': 5,
        'y': -3
    }
};

Отфильтруем её по свойству x:

result = go.Lang.filter(dict, "x");

Результат:

{
    'one': {
        'x': 1,
        'y': 5
    },
    
    'five': {
        'x': 5,
        'y': -3
    }
}

Оставим только объекты с отрицательным y:

result = go.Lang.filter(dict, function (item, key, items) {
    return (item.y < 0);
});

Результат:

{
    'five': {
        'x': 5,
        'y': -3
    }
}

Колбэк criterion вызывается для каждого элемента и получает в качестве аргументов:

  • item {Object} - очередной объект.
  • key {(String|Number)} - ключ словаря или индекс массива.
  • items {(Object|Array)} - вся фильтруемая структура.

Если возвращаемое значение приводится к true - элемент попадает в результирующий объект. false - соответственно, не попадает.

Если на входе у filter массив, на выходе также отфильтрованный массив.

Clone this wiki locally