Maison  >  Article  >  interface Web  >  Nombre - Défis JavaScript

Nombre - Défis JavaScript

DDD
DDDoriginal
2024-10-31 09:03:02790parcourir

Number - JavaScript Challenges

Vous pouvez retrouver tout le code dans cet article sur GitHub.


Défis liés aux nombres


Serrer

La fonction fixe une valeur moyenne dans une plage comprise entre une limite minimale et maximale définie. La fonction prend trois paramètres : une valeur préférée, une valeur minimale et une valeur maximale autorisée.

/**
 * @param {number} value
 * @param {number} lower
 * @param {number} upper
 * @return {number}
 */

function clamp(value, lower, upper) {
  return Math.min(upper, Math.max(lower, value));
}

// Usage example
console.log(clamp(12, 0, 1)); // => 1
console.log(clamp(12, 5, 13)); // => 12
console.log(clamp(12, 15, 100)); // => 15

Arrondir à deux décimales

/**
 * @param {any} value
 * @returns any
 */

function fixedTwoDigits(value) {
  if (typeof value !== "number") {
    return value;
  }

  return Number(value.toFixed(3).slice(0, -1));
}

// Usage example
console.log(fixedTwoDigits(Math.random())); // => 0.xx

Addition d'un grand entier

/**
 * @param {string} numStr1
 * @param {string} numStr2
 * @return {string}
 */

function add(num1, num2) {
  const num1Arr = num1.split("").map(Number);
  const num2Arr = num2.split("").map(Number);
  let carry = 0;
  let result = [];

  while (num1Arr.length || num2Arr.length || carry) {
    const sum = (num1Arr.pop() ?? 0) + (num2Arr.pop() ?? 0) + carry;
    carry = sum > 9 ? 1 : 0;
    result.push(sum % 10);
  }

  return result.reverse().join("");
}

// Usage example
console.log(add("999999999999999999", "1")); // => '1000000000000000000'

Ajouter une virgule aux nombres

/**
 * @param {number} num
 * @return {string}
 */

function addComma(num) {
  const [integerStr, floatStr] = String(num).split(".");
  let count = 0;
  let result = "";

  for (let i = integerStr.length - 1; i >= 0; i -= 1) {
    count += 1;
    result = integerStr[i] + result;

    if (count % 3 === 0 && i !== 0) {
      result = "," + result;
    }
  }

  return floatStr ? result + `.${floatStr}` : result;
}

// Usage example
console.log(addComma(1)); // => '1'
console.log(addComma(1000)); // => '1,000'
console.log(addComma(-12345678)); // =>  '-12,345,678'
console.log(addComma(12345678.12345)); // =>  '12,345,678.12345'

Ajouter de l'espace aux numéros de banque

/**
 * @param {string} num
 * @return {string}
 */

function addSpacesEveryFourDigits(num) {
  const numStr = String(num);
  let result = "";

  for (let i = 0; i < numStr.length; i += 1) {
    result += numStr[i];

    if ((i + 1) % 4 === 0 && i + 1 !== numStr.length) {
      result += " ";
    }
  }

  return result.trim();
}

// Example usage:
console.log(addSpacesEveryFourDigits("1234567890")); // => "1234 5678 90"

Chiffres arabes en caractères chinois

/**
 * @param {string} arabicNumber
 * @return {string}
 */

function digitToChinese(digit) {
  const digitMap = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
  return digitMap[digit];
}

function arabicToChineseNumber(arabicNumber) {
  let chineseNumber = "";

  for (let i = 0; i < arabicNumber.length; i++) {
    chineseNumber += digitToChinese(arabicNumber[i]);
  }

  return chineseNumber;
}

// Usage example
console.log(arabicToChineseNumber("12345")); // => 一二三四五

Fusionner des nombres continus

/**
 * @param {Array} Array
 * @return {arr}
 */

function mergeContinousNumbers(arr) {
  if (!arr || arr.length === 0) {
    return [];
  }

  const merged = [];
  let start = arr[0];
  let end = arr[0];

  for (let i = 1; i < arr.length; i += 1) {
    if (arr[i] === end + 1) {
      end = arr[i];
    } else {
      if (start === end) {
        merged.push(String(start));
      } else {
        merged.push(`${start}->${end}`);
      }

      start = end = arr[i];
    }
  }

  if (start === end) {
    merged.push(String(start));
  } else {
    merged.push(`${start}->${end}`);
  }

  return merged;
}

// Usage example
console.log(mergeContinousNumbers([1, 2, 3, 4, 6, 7, 9, 13, 15])); // => ['1->4', '6->7', '9', '13', '15']

Référence

  • pince() - MDN
  • GreatFrontEnd
  • 62. implémenter l'ajout de BigInt - BFE.dev

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn