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

150
Visualizações
Remove item from array according to condition

I have an array (given below). I want to remove files, if minified version of the same file exist.

var files = ["foo.js", "foo.min.js", "bar.css","bar.min.css"];

// Should return: [foo.min.js", "bar.min.css"]

var files = ["foo.js", "foo.min.js", "bar.css"];

// Should return: [foo.min.js", "bar.css"]

What i have tried

var files = ["foo.js", "bar.css"];

var tempUnMinified = [];
var tempMinified = [];
files.forEach(function (file) {
  if (file.endsWith(".min.js") || file.endsWith(".min.css")) {
    tempMinified.push(file);
  } else {
    tempUnMinified.push(file);
  }
});

tempUnMinified.forEach(function (unMinFile) {
  var tempRf = unMinFile.replace(".js", ".min.js").replace(".css", ".min.css");
  if (files.includes(tempRf)) {
    files.splice(files.indexOf(unMinFile), 1);
  }
});

console.log(files);

What i have tried does works, but i'm not sure if it works every time

and so on.. Thanks in advance

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

0

It can be done a little more concisely and in a way that's independent of file type...

const files = ["foo.js", "foo.min.js", "bar.css","bar.min.css"];
const remove = {}

files.forEach(fn => {
  let comps = fn.split('.');
  // is the middle token min?
  if (comps.length === 3 && comps[1] === 'min') {
    // remember to remove the file without the middle token
    remove[`${comps[0]}.${comps[2]}`] = true;
  }
});
console.log(`will remove: ${Object.keys(remove)}`);

const filtered = files.filter(fn => !remove[fn]);
console.log(filtered);

about 4 years ago · Juan Pablo Isaza Relatório

0

Use the map to manipulate the array data to remove ".min" and Use a set for the uniqueness of filenames

    const files = ["foo.js", "foo.min.js", "bar.css","bar.min.css"];
    const result = [...new Set(files.map(file => file.replace('.min', '')))];
    console.log(result)
about 4 years ago · Juan Pablo Isaza Relatório

0

You just need to create a custom implementation of the filter

const files = ["foo.js", "foo2.js", "foo2.css", "foo.min.js", "bar.css","bar.min.css"];


const result = files.filter((file) => {
  const miniPart = '.min.';
  if (file.includes(miniPart)) return true;

  const [name, extension] = file.split('.');
  const miniFile = `${name}${miniPart}${extension}`;

  return !files.includes(miniFile);
});

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

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