Pode-se usar a função filter() em JavaScript para filtrar a matriz de objetos com base em atributos. A função filter() retornará um novo array contendo todos os elementos do array que passam na condição dada. Se nenhum elemento passar na condição, ele retorna um array vazio. A função filter() faz um loop ou itera sobre cada elemento da matriz e passa cada elemento para a função de retorno de chamada.

Sintaxe:

var newArray = array.filter(function(item)
 {
  return conditional_statement;
 });

Nota: A função filter() não altera a matriz original.

Exemplo 1: Criamos um array de “alunos” e chamamos a função filter() no array para derivar os elementos do array que satisfazem a condição dada.

<script>
var obj = {
    'Students': [{
            "name": "Raj",
             "Age":"15",
            "RollNumber": "123",
            "Marks": "99",
              
        }, {
            "name": "Aman",
             "Age":"14",
            "RollNumber": "223",
            "Marks": "69",
           },
           {
            "name": "Vivek",
             "Age":"13",
            "RollNumber": "253",
            "Marks": "89",
           },
        ]
};
  
var newArray = obj.Students.filter(function (el)
{
  return el.Age >=15 &&
         el.RollNumber <= 200 &&
         el.Marks >= 80 ;
}
);
console.log(newArray);
</script>

Saída: Depois de aplicar a função de filtro no array, obtemos o primeiro elemento do array como saída, uma vez que satisfaz a condição dada.

Exemplo 2: O exemplo a seguir mostra a filtragem de entradas inválidas da matriz. Criamos um array de “id” se chamamos a função filter() no array para derivar os “id” s cujos valores são diferentes de zero e numéricos. 

<script>
let array = [
  { id: 3 },
  { id: -1 },
  { id: 0 },
  { id: 15 },
  { id: 12.2 },
  { },
  { id: null },
  { id: NaN },
  { id: 'undefined' }
]
  
let countInvalidEntries = 0
  
function filterById(obj) {
  if (Number.isFinite(obj.id) && obj.id !== 0) 
  {
    return true
  } 
  countInvalidEntries++
  return false;
}
  
let arrayById = array.filter(filterById);
  
console.log('Filtered Array with non-zero and numeric id: \n',
        arrayById);
  
console.log('Number of Invalid Entries = ', countInvalidEntries);
  
</script>

Saída: depois de aplicar a função filter() na matriz de tamanho 9, obtemos 4 id válidos (diferentes de zero e numéricos) e 5 id inválidos