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

149
Visualizações
¿Cómo evitar la ejecución cuando alguien está ausente?

Actualmente estoy trabajando en un bot de holgura. El propósito es que se seleccionará un desarrollador para una actualización todos los días a las 8 am. Actualmente estoy tratando de descubrir cómo evitar una ejecución cuando alguien está ausente.

 var result_arr = []; function setValue (value) { result_arr = Object.values(JSON.parse(JSON.stringify(value))); return result_arr; } db.connect(function(err) { db.query("SELECT * FROM developers", (err, result, fields) => { if (err) { console.log(err); } else { // selected = all.map(item => item.selected); setValue(result); removeMax(); } }) })

Resultado de result_arr

 rows [ { id: 5, name: 'wqeqwe', selected: 13, absent: 1 }, { id: 7, name: 'weqe', selected: 3, absent: 1 }, { id: 8, name: 'me', selected: 13, absent: 1 }, { id: 9, name: 'joe', selected: 18, absent: 0 }, { id: 10, name: 'tim', selected: 3, absent: 0 } ]

La función RemoveMax eliminará el seleccionado más alto (8) y barajará los otros (1, 3, 4, 6), luego capturará uno aleatorio

 function removeMax() { const max = Math.max(result_arr.map(item => item.selected)); newArr = result_arr.filter(item => item.selected !== max) shufflearray = newArr[Math.floor(Math.random()*newArr.length)]; setShuffle(shufflearray); hello(); }

Esto está conectado con RemoveMax, pero como es asíncrono, tengo que hacerlo global para agregarlo a otra función.

 var result_shuffle = []; function setShuffle (shufflearray) { result_shuffle = shufflearray; return result_shuffle }

El barajador ha elegido un Seleccionado al azar.

 result_shuffle { id: 5, name: 'wqeqwe', selected: 13, absent: 1 }

Llegando a la pregunta. wqeqwe está ausente hoy, por lo tanto, la ejecución debe cancelarse; sin embargo, todavía quiero que se seleccione a alguien que NO esté ausente y que el código vuelva a ejecutarse. ¿Cómo hago esto?

 function hello() { console.log("1", result_shuffle); console.log("2", result_shuffle.absent); if (shufflearray.absent == 1) { const baddy = "urbad" } else (shufflearray) => { var sql = `UPDATE developers SET selected = ${result_shuffle.selected} + 1 WHERE id = ${result_shuffle.id}`; db.query(sql, function (err, result) { if (err) throw err; console.log(result.affectedRows + " record(s) updated"); }); } }
about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Solo lo filtras. Ya lo está haciendo, solo necesita filtrarlo dos veces, una vez para cada condición.

Pero primero, Math.max espera una entrada diferente. Deberá distribuir esa matriz antes de que funcione. Y luego acabo de agregar un segundo filtro al mapeo newArr para eliminar a todos los que están ausentes.

 const result_arr = [ { id: 5, name: 'wqeqwe', selected: 13, absent: 1 }, { id: 7, name: 'weqe', selected: 3, absent: 1 }, { id: 8, name: 'me', selected: 13, absent: 1 }, { id: 9, name: 'joe', selected: 18, absent: 0 }, { id: 10, name: 'tim', selected: 3, absent: 0 } ]; const max = Math.max(...result_arr.map(item => item.selected)); let newArr = result_arr.filter(item => item.selected !== max) .filter(item => !item.absent); console.log(newArr);

Pero también debe filtrar a las personas ausentes del cálculo máximo, creo, en caso de que una de las personas ausentes tenga la selección más alta, así que también agregué el filtro ausente allí. Además, ten en cuenta que si joe (18) estuviera ausente y wqeqwe y me (13) no, tanto wqeqwe como me serían eliminados, ya que tienen el mismo seleccionado.

 const result_arr = [ { id: 5, name: 'wqeqwe', selected: 13, absent: 1 }, { id: 7, name: 'weqe', selected: 3, absent: 1 }, { id: 8, name: 'me', selected: 13, absent: 1 }, { id: 9, name: 'joe', selected: 18, absent: 0 }, { id: 10, name: 'tim', selected: 3, absent: 0 } ]; const max = Math.max( ...result_arr.filter(item => !item.absent) .map(item => item.selected) ); let newArr = result_arr.filter(item => item.selected !== max) .filter(item => !item.absent); console.log(newArr);

Luego, simplemente mezcla esa matriz filtrada con la función de reproducción aleatoria.

También puede combinar ambas condiciones en el primer filtro:

 const result_arr = [ { id: 5, name: 'wqeqwe', selected: 13, absent: 1 }, { id: 7, name: 'weqe', selected: 3, absent: 1 }, { id: 8, name: 'me', selected: 13, absent: 1 }, { id: 9, name: 'joe', selected: 18, absent: 0 }, { id: 10, name: 'tim', selected: 3, absent: 0 } ]; const max = Math.max( ...result_arr.filter(item => !item.absent) .map(item => item.selected) ); let newArr = result_arr.filter( item => item.selected !== max && !item.absent ); console.log(newArr);

about 4 years ago · Santiago Trujillo 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