• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
    • Questions
    • Teachers
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

229
Views
¿Puede el valor booleano producir valores numéricos?

Encontré una solución para una de las pruebas que tengo al trabajar con la estructura de datos de JavaScript, en la que se proporcionó un objeto (juego con nombre) de la siguiente manera.

 const game = { score: '4:0', scored: ['Lewandowski', 'Gnarby', 'Lewandowski', 'Hummels'], //Names of players date: 'Nov 9th, 2037', odds: { team1: 1.33, x: 3.25, team2: 6.5, }, };

El cuestionario o desafío consiste en crear un objeto llamado 'goleadores' que contenga los nombres de los jugadores que anotaron como propiedades y el número de goles como valor. En este juego, se verá así:

 { Gnarby: 1, Hummels: 1, Lewandowski: 2 }

Encontré la siguiente solución:

 let scorers = {}; let arr = Object.values(game.scored); for(const player of arr) { scorers[player] = (scorers[player] || 0) + 1; } console.log(scorers); // {Lewandowski: 2, Gnarby: 1, Hummels: 1}

Mi pregunta es cómo la sintaxis scorers[player] = (scorers[player] || 0) + 1; produce valores para cada propiedad del jugador, aunque será verdadero o falso, y ¿cómo al final se agregará 1 aunque sea de tipo número? ¿Cómo interpretar este código en un lenguaje sencillo?

almost 3 years ago · Juan Pablo Isaza
2 answers
Answer question

0

A diferencia de otros lenguajes, JavaScript permite que se usen otros tipos de datos para lo que parecen ser operadores puramente booleanos. En ese caso, JavaScript interpretará temporalmente un valor no booleano como "falso" o "verdadero".

Hay dos casos:

  • scorers[player] no está definido. En ese caso el || El operando identificará ese valor como un valor "falso" y, por lo tanto, continuará evaluando el operando correcto, que es 0. Entonces (undefined || 0) se evalúa como 0.

  • se define scorers[player] , y (para este programa) será un número positivo. En ese caso el || el operando lo considerará "veraz" y no evaluará el operando correcto. Entonces (1 || 0) se evalúa como 1.

NB: en JavaScript moderno, ahora es una mejor práctica usar el ?? operador para este caso de uso en lugar de || .

almost 3 years ago · Juan Pablo Isaza Report

0

La sintaxis scorers[player] || 0 se llama cortocircuito en JavaScript.

Es tan simple como AND, OR AND NOT en álgebra lógica. De forma predeterminada, una propiedad inexistente en JS Object produce undefined (lo que significa Boolean false). Aquí hay algunos usos del cortocircuito en JS.

ingrese la descripción de la imagen aquí

Su declaración scorers[player] = (scorers[player] || 0 dará como resultado el resultado socres [jugador] si existe o 0. Cuando le agregó 1, aumentará el recuento de goles del jugador actual. Eso dará como resultado en 0 o +1 a la puntuación actual del jugador Cada paso involucrado en esa declaración se muestra a continuación.

ingrese la descripción de la imagen aquí

almost 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error