UNPKG

1.17 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.createQuartile = void 0;
4/**
5 * 给予一个排序好的数组,分位数
6 *
7 * @param arr 排序好的数组
8 * @param percentage 百分比
9 * @returns {number} 计算结果
10 */
11function quantileSorted(arr, percentage) {
12 const len = arr.length;
13 if (!len) {
14 return undefined;
15 }
16 if (len < 2) {
17 return arr[len - 1];
18 }
19 const i = (len - 1) * percentage;
20 const i0 = Math.floor(i);
21 const v0 = arr[i0];
22 const v1 = arr[i0 + 1];
23 return v0 + (v1 - v0) * (i - i0);
24}
25/**
26 * 给定一个数组, 创建分位数数组
27 *
28 * @param arr 排序好的数组
29 * @param n 分位数数组长度
30 * @param isSorted 数组是否排序好
31 * @returns {number[]} 分位数数组
32 */
33function createQuartile(arr, n, isSorted = false) {
34 const numberArr = arr;
35 if (!isSorted) {
36 numberArr.sort((a, b) => a - b);
37 }
38 const tmp = [];
39 for (let i = 1; i < n; i += 1) {
40 tmp.push(quantileSorted(numberArr, i / n));
41 }
42 return tmp;
43}
44exports.createQuartile = createQuartile;
45//# sourceMappingURL=create-quartile.js.map
\No newline at end of file