cat-tick.js 846 B

12345678910111213141516171819202122232425262728293031323334353637
  1. // cat平均算法,保头保尾
  2. export default (function (cfg) {
  3. var {
  4. values,
  5. tickCount
  6. } = cfg;
  7. if (!tickCount) {
  8. return values;
  9. }
  10. if (values.length <= 1) {
  11. return values;
  12. } // 获取间隔步长, 最小是1
  13. var step = parseInt(values.length / (tickCount - 1)) || 1;
  14. var ticks = []; // 按间隔数取对应节点
  15. for (var index = 0; index < values.length; index = index + step) {
  16. ticks.push(values[index]);
  17. }
  18. var last = values[values.length - 1]; // 如果最后一个tick不等于原数据的最后一个
  19. if (ticks[ticks.length - 1] !== last) {
  20. if (ticks.length >= tickCount) {
  21. // 如果当前的tick个数满足要求
  22. ticks[ticks.length - 1] = last;
  23. } else {
  24. // 不满足tickCount则直接加入最后一个
  25. ticks.push(last);
  26. }
  27. }
  28. return ticks;
  29. });