He insertado objetos con una nueva propiedad (nombre de propiedad - "Tipo") en una matriz JS. Después de eso, necesito filtrar objetos con esa propiedad (que es "Tipo") a una nueva matriz.
var arr = [ {ID: 1, Name: "Name1"}, {ID: 2, Name: "Name2"}] var newObject = { ID: 3, Name: 'Test', Type: 'New' }; arr.push(newObject);Lo intenté
var newVal = arr.filter(x => x.Type !== null);devuelve todo el objeto de la matriz
el resultado debe ser
[{ ID: 3, Name: "Test", Type: "New" }]No busque null . Use undefined en su lugar:
var newVal = arr.filter(x => x.Type !== undefined); Verifique esta definición de null e undefined :
Nulo: Es la ausencia intencional del valor. Es uno de los valores primitivos de JavaScript. Indefinido: Significa que el valor no existe en el compilador. Es el objeto global.
Porque es indefinido en lugar de nulo.
El siguiente código obtendrá cualquier tipo EXCEPTO tipos falsos como "Type" : 0 y "Type": ""
let arr = [ {ID: 1, Name: "Name1"}, {ID: 2, Name: "Name2"}] var newObject = { ID: 3, Name: 'Test', Type: 'New' }; arr.push(newObject); const newVal = arr.filter(x => { console.log(x.Type) return x.Type; // not undefined, not null, not empty string. }); console.log(newVal)En las versiones más nuevas de Javascript (creo que ES 2021), puede usar la fusión nula:
var arr = [ {ID: 1, Name: "Name1"}, {ID: 2, Name: "Name2"}] var newObject = { ID: 3, Name: 'Test', Type: 'New' }; arr.push(newObject); var newVal = arr.filter(x => x.Type ?? false); console.log(newVal) La fusión nula es buena cuando se define una variable, pero técnicamente es falsa. con a ?? b , se devolverá a o b . Si a es undefined , null , se devolverá b . De lo contrario, se devolverá a . Puedes leer más sobre esto en MDN .