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

128
Visualizações
Why is this 2D array filtering not working?

I have this 2D array and I'm trying to filter it, but it's coming out unfiltered:

Data:

[
 ["Val #","Val #","Val #","Val #","Val #"],
 ["SO-000379-001A-047-1","SO-000379-001A-047-2","-","-","-"]
]

Filtering line:

cads = cads.filter(e => e[1] != "-" || e[1] != '');

Expected result:

[
 ["Val #","Val #"],
 ["SO-000379-001A-047-1","SO-000379-001A-047-2"]
]

WTHeck am I missing?

Thank you!

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

it should be

const data = [
 ["Val #","Val #","Val #","Val #","Val #"],
 ["SO-000379-001A-047-1","SO-000379-001A-047-2","-","-","-"]
]

const result = data.map(d => d.filter(v => !['', '-'].includes(v)))

console.log(result)

you want to filter out the inner arrays not the main one

so you have to map each external array and then filter the single rows

about 4 years ago · Juan Pablo Isaza Relatório

0

Is this what you need? Filter items based on x and y axis.

const cads = [
  ["Val #", "Val #", "Val #3", "Val #", "Val #"],
  ["SO-000379-001A-047-1", "-", "SO-000379-001A-047-2", "-", "-"]
]

function f(data) {
  if (!(data && data.length)) {
    return []
  }
  const v = []
  const m = data.length;
  const n = data[0].length;
  const check = (x) => x !== '-' && x !== ''
  for (let i = 0; i < n; i++) {
    let f = true
    for (let j = 0; j < m; j++) {
      if (!check(data[j][i])) {
        f = false
        break;
      }
    }
    if (f) {
      for (let k = 0; k < m; k++) {
        v[k] = v[k] || []
        v[k].push(data[k][i]);
      }
    }
  }
  return v
}
console.log(f(cads))

about 4 years ago · Juan Pablo Isaza Relatório

0

let data = [
 ["Val #","Val #","Val #","Val #","Val #"],
 ["SO-000379-001A-047-1","SO-000379-001A-047-2","-","-","-"]
]

for (let i = 0; i <= data[1].length; i++) {
    if(data[1][i] === "-"){
        data[0].splice(i,1);
        data[1].splice(i,1);
        i--;
    }
}

console.log(data);

Not smart enough to use those Array.map/filter function, but I guess this is what you want?

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