Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

213
Visualizações
Remove Nullish values from multidimensional array?

I have an array res with some nullish values, and I have a function remove that is supposed return an array with nulls and undefined removed, but I can't get it to work on my array. I've seen plenty of answers on this sort of thing, in fact my remove function originated from one of them, but I can't seem to get it to work.

res =    
[
{
    "1yKKftO0iOyvsacrW1mEr-FylurU8-fwaefewafw": [
        "raggy@champ.co",
        "grope@champ.co",
        null,
        "halp@champ.co"
    ]
},
{
    "149Lmt-gweagewfrthjregjiojoinONEDOnonao": [
        "raggy@champ.co"
    ]
},
{
    "JG043AHF0GJA0EWJIFJO00WIJF-UffFWEAk8QRg4": [
        "wlyman@champ.co",
        "raggy@champ.co"
    ]
},
{
    "1u-Frw5I4agI-FWKE0AFJ0WEJG0JEFDALKFEWA-ns": [
        null,
        "raggy@champ.co"
    ]
},
{
    "FAWGETAIODIOFAIJDSOIFJWEOFijewaofifejowef": [
        "raggy@champ.co"
    ]
},
{
    "fwaejf0JF0EWJIJFFJMojfeoijfewJEJFI0i0fje": [
        "raggy@champ.co"
    ]
},
{
    "FJ09Ejf093ejfie0jfeiJFEJF0IWJFEIJFOEJWow": [
        "raggy@champ.co"
    ]
}
]

var remove = function (array) {
var result = [];

array.forEach(function (item) {
  if (Array.isArray(item) && item.length!=0) {
    // Item is a nested array, go one level deeper recursively
    result.push(remove(item));
  }
  else if (typeof item !== null) {
    result.push(item);
  }
});

return result;
};

console.log(remove(res));
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Here is a solution without recursion that will work for the nesting level given in example. Also will work if a single array element has multiple key value pairs.

let res =[{"1yKKftO0iOyvsacrW1mEr-FylurU8-fwaefewafw": ["raggy@champ.co","grope@champ.co",null,"halp@champ.co"]},{"149Lmt-gweagewfrthjregjiojoinONEDOnonao": ["raggy@champ.co"]},{"JG043AHF0GJA0EWJIFJO00WIJF-UffFWEAk8QRg4": ["wlyman@champ.co","raggy@champ.co"]},{"1u-Frw5I4agI-FWKE0AFJ0WEJG0JEFDALKFEWA-ns": [undefined,"raggy@champ.co"]},{"FAWGETAIODIOFAIJDSOIFJWEOFijewaofifejowef": ["raggy@champ.co"]},{"fwaejf0JF0EWJIJFFJMojfeoijfewJEJFI0i0fje": ["raggy@champ.co"]},{"FJ09Ejf093ejfie0jfeiJFEJF0IWJFEIJFOEJWow": ["raggy@champ.co",null]}]

var remove = function (array) {

return array.map(function (item) {
  let x = Object.entries(item).map((y) => {
    return [y[0],y[1].filter((z)=> z!==undefined && z!==null)]
  })
  return Object.fromEntries(x)
});
};

console.log(remove(res));

about 4 years ago · Juan Pablo Isaza Relatório

0

If you want to remove nulls as well as undefineds, you probably want to replace else if (typeof item !== null) with else if (typeof item != null)

about 4 years ago · Juan Pablo Isaza Relatório

0

What's happening

The elements of res are Objects. Notice that in the nested function call of remove

result.push(remove(item));

the item being passed are elements of res thus not an array. So when remove(item) is called the check Array.isArray(item) fails and nothing is sorted out. To get the inner array make add this line.

var values = Object.values(item)

Now handle the cases of item being null, Object and Array.

Solution

Here's my Attempt at the solution. (I hope you don't mind ES6) This does work on this particular (not sure about other cases)

const remove = (item) => {
  if (item) {
    console.log('not null', item)
    if (Array.isArray(item)) {
      const result = []
      for (let elem of item) {
        const cleanedElem = remove(elem)
        // Maybe use Nullish coalescing operator ?
        if (cleanedElem !== null && cleanedElem !== undefined)
          result.push(cleanedElem)
      }
      return result
    } else if (typeof item === 'string' || typeof item === 'number') {
      return item
    } else if (item) {
      const result = {}
      for (let pair of Object.entries(item)) {
        const [key, value] = pair
        const cleanedValue = remove(value)
        // Maybe use Nullish coalescing operator ?
        if (cleanedValue !== null && cleanedValue !== undefined)
          result[key] = remove(cleanedValue)
      }
      return result
    }
  }
}

cleansed = remove(res)
console.log(cleansed);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda