d3.randomInt не является функцией - PullRequest
0 голосов
/ 03 апреля 2020

Пожалуйста, не закрывайте этот вопрос только потому, что речь идет только о случайной функции.

Привет,

У меня есть фиктивный вопрос о d3.randomInt ();

Вывод d3.randomInt () является функцией, а не значением. Поэтому, чтобы получить случайную цифру между 0,10, мне нужно (я думаю)

var x = d3.randomInt(0,10)();

, но там написано, что d3.randomInt не является функцией. поэтому я попытался

var x = d3.randomInt(0,10) 

просто набрать, ни один из них не работал. Я не вижу заметки о выпуске d3 о том, что randomint больше не доступен. Поэтому я уверен, что есть способ получить значения.

Заранее спасибо.

1 Ответ

2 голосов
/ 03 апреля 2020

d3.randomInt является частью версии 2 модуля d3-random. Поскольку основной пакет D3 версии 5 по-прежнему использует версию 1 этого модуля, этот метод еще не доступен при загрузке пакета. Метод был введен в качестве исправления для проблемы randomInt ([min = 0,] max) # 26 и станет частью предстоящей версии 6 основного комплекта.

На момент написания статьи предварительная версия основного комплекта 6 не была общедоступной. Тем не менее, чтобы заставить его работать, есть несколько вариантов:

  1. Создайте свой собственный пользовательский комплект , содержащий d3-случайный модуль v2.
  2. Загрузите отдельные модули вместо весь пакет, включая d3-random v2.
  3. Вероятно, самым простым и наименее навязчивым способом может быть расширение D3 v5 путем добавления нескольких строк отсутствующего метода d3.randomInt() к d3 объект. Взгляните на следующий фрагмент (загрузка D3 v5.7.0) для рабочей демонстрации.

d3.randomInt = d3.randomInt || (function sourceRandomInt(source) {
  function randomInt(min, max) {
    if (arguments.length < 2) max = min, min = 0;
    min = Math.floor(min);
    max = Math.floor(max) - min;
    return function() {
      return Math.floor(source() * max + min);
    };
  }

  randomInt.source = sourceRandomInt;

  return randomInt;
})(Math.random);

const random = d3.randomInt(5, 10);
console.log(random());
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
...