Creé un código de filtrado simple que filtra 0 y nulos. Quizás no sea el más elegante, pero funciona:
var data = [{"location": 30, "year": 2019}, {"location": 60, "year" : 1928}, {"location": 0, "year": 2019}, {"location": 50, "year": 0}]; var filteredData = []; for (var i = 0; i < data.length; ++i) { if (data[i].location !== null && data[i].location != 0) { filteredData.push({ location: data[i].location, year: data[i].year }) } }; console.log(filteredData);Ahora me gustaría filtrar 0 y nulos para otras claves (por ejemplo, año), ¿cómo puedo cambiar dinámicamente la clave?
Mi pensamiento (quizás ingenuo) fue crear una variable que indicara la clave que quiero filtrar
Desafortunadamente eso no funcionó. ¿Alguien tiene una sugerencia o me ayuda en la dirección correcta?
var var1 = 'year'; var data = [{"location": 30, "year": 2019}, {"location": 60, "year" : 1928}, {"location": 0, "year": 2019}, {"location": 50, "year": 0}]; var filteredData = []; for (var i = 0; i < data.length; ++i) { if (data[i].var1 !== null && data[i].var1 != 0) { filteredData.push({ location: data[i].location, year: data[i].year }) } }; console.log(filteredData)Su problema es que necesita usar la notación de corchetes en lugar de la notación de puntos para las claves variables.
Dicho esto, JavaScript tiene un método de filtro de matriz
Luego puede usar cada para tener claves dinámicas en una matriz:
const data = [{"location": 30, "year": 2019}, {"location": 60, "year" : 1928}, {"location": 0, "year": 2019}, {"location": 50, "year": 0}]; const notZero = ["location","year"] const filteredData = data.filter(item => notZero.every(key => item[key] !== 0)) console.log(filteredData)en lugar de data[i].var1 intente data[i][var1] . los corchetes le permiten tener una clave dinámica.
Si puede tener 0 o nulo en sus datos, debe hacer esto:
const data = [{"location": 30, "year": 2019}, {"location": 60, "year" : 1928}, {"location": 0, "year": 2019}, {"location": 50, "year": 0}]; const filteredData = data.filter(item => !Object.values(item).filter(value => !value).length)Esto le permite verificar dinámicamente todos los valores dentro de un objeto y verificar si todos ellos son valores verdaderos, capturando así todos los valores falsos.