Como filtrar a matriz de objetos com base em atributos?
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
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva