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

187
Visualizações
How Can I Make a conditional with return in a .map without get out of main function?

My objective is create this object:

{
  name: string,
  birthday: date
}

by this array:

const dataArray = [
 {
  "id": "name",
  "type": "string"
 },
 {
  "id": "birthday",
  "type": "date"
 }
]

So, I create a .map of the array, like this:

const inputsValues = {};

dataArray.map(item => {
  if(item.type === "date"){
    inputsValues[item.id] = new Date(item.value);
    return; // this line is the problem
  }

  inputsValues[item.id] = item.value;
});

Is there a option to make a return in this function without use else?

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

0

const data = [
  {id: "name", type: "string", value: "John"},
  {id: "birthday", type: "date", value: "02.02.22"},
  {id: "holiday", type: "date", value: "03.03.33"}
]

const inputsValues = data
  // the "return" function - filters all non "date" items
  .filter(item => item.type != "date")
  // the map + inputsValue combination in one function
  .reduce((values, item) => ({[item.id]: item.value, ...values}), {})
  
console.log(inputsValues)

about 4 years ago · Juan Pablo Isaza Relatório

0

Using map only to loop on an array, without using the returned array, is an anti pattern. The function map creates a new array by applying the given callback to all the values of an array ie dataArray. This is not your case because you want an object at the end, not an array.

Tu build your structure you should use, instead, a for of loop, a forEach or Array.reduce().

In case you just need to reduce your array to one single object, reduce is the best option:

const dataArray = [
    {
        "id": "name",
        "type": "string"
    },
    {
        "id": "birthday",
        "type": "date"
    }
];

const obj = dataArray.reduce((carry, { id, type, value = '' }) => {
    carry[id] = type === 'date' ? new Date() : value;

    return carry;
}, {}); // remember to initialize your carry, see reduce doc.

console.log(obj); // My reduced object { name: '', date: 2022-...}
about 4 years ago · Juan Pablo Isaza Relatório

0

const dataArray = [{
    "id": "name",
    "type": "string"
  },
  {
    "id": "birthday",
    "type": "date"
  }

]
console.log(
  dataArray.reduce((acc, curr) => {
    acc[curr.id] = curr.type;
    return acc;
  }, {})
);

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