Third Person Shooter Example

Imagine you are building a third-person shooter game, and you have an array of objects that represent the player's weapons. Each weapon object has the following properties:

  • name: the name of the weapon

  • damage: the base damage dealt by the weapon

  • accuracy: a value between 0 and 1 representing the weapon's accuracy

  • ammo: the number of rounds left in the weapon's magazine

You can use the Array.prototype.reduce() method to calculate the total damage dealt by all of the player's weapons that have ammo remaining.

Here is an example of how you could do this:

const weapons = [
  { name: 'Pistol', damage: 20, accuracy: 0.8, ammo: 12 },
  { name: 'Rifle', damage: 30, accuracy: 0.7, ammo: 8 },
  { name: 'Sniper rifle', damage: 50, accuracy: 0.9, ammo: 5 },
  { name: 'Shotgun', damage: 40, accuracy: 0.6, ammo: 0 }
];

const totalDamage = weapons.reduce((accumulator, weapon) => {
  if (weapon.ammo > 0) {
    return accumulator + weapon.damage;
  }
  return accumulator;
}, 0);

console.log(totalDamage); // 100

In this example, the reduce() function is called on the weapons array with two arguments: a callback function and an initial accumulator value of 0. The callback function has two arguments: accumulator and weapon.

On each iteration, the callback function checks if the current weapon has ammo remaining (weapon.ammo > 0). If it does, the callback function adds the damage property of the weapon object to the accumulator and returns the new value. If the weapon has no ammo remaining, the callback function simply returns the current value of the accumulator without modifying it. This process continues until all elements in the array have been processed, and the final value of accumulator is returned as the total damage dealt by all weapons with ammo remaining.

Last updated