Высота деления относительно некоторого числового значения внутри элемента - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть набор блоков, каждый из которых имеет свой связанный номер.Мне нужно, чтобы высота блоков соответствовала этому числу.Например, enter image description here

Как видите, чем больше число, тем выше div.Но это не 1: 1 связано, верно?Иначе мы бы даже не увидели блоки с номером «1» или «10».Поэтому я пытаюсь выяснить, как рассчитать эту приблизительную высоту.Я знаю, это больше похоже на математическую задачу.


Обновление: также значения могут быть любыми дробями, включая менее 1

enter image description here

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Наконец, у нас есть рабочая функция, которая решает эту проблему.

Предположим, у нас есть массив объектов блоков с идентификатором и значением относительного числа.

function blockHeights(blocks) {
  const MAX_HEIGHT_PX = 500;
  let logs = [];
  blocks.forEach((block) => {
      if (block.value) {
        logs.push(Math.log10(block.value));
      }
  });
  const minLog = Math.ceil(Math.min(...logs));
  const addition = minLog < 0 ? (1 - minLog) : 0;
  const maxLog = Math.ceil(Math.max(...logs)) + addition;
  const step = MAX_HEIGHT_PX / maxLog;
  let blockHeights = {};
  blocks.forEach((block) => {
      blockHeights[block.id] = Math.round(step * (Math.log10(block.value) + addition));
  });
  return blockHeights;
}
0 голосов
/ 07 декабря 2018

Может быть может зацикливаться на каждом значении и проверять, если

 if (largestValue > 100) {
      percentage = (currentValue / largestValue) * 100
      if ( percentage < 5 ) {
           BlockXUIHeight = 5
           BlockXUIWidth = 5
      }
 }
...