ag-charts-community
Version:
Advanced Charting / Charts supporting Javascript / Typescript / React / Angular / Vue
74 lines • 1.98 kB
JavaScript
// Custom `Array.find` implementation for legacy browsers.
export function find(arr, predicate) {
for (let i = 0; i < arr.length; i++) {
const value = arr[i];
if (predicate(value, i, arr)) {
return value;
}
}
}
export function findIndex(arr, predicate) {
for (let i = 0; i < arr.length; i++) {
if (predicate(arr[i], i, arr)) {
return i;
}
}
return -1;
}
function identity(value) {
return value;
}
export function extent(values, predicate, map) {
const transform = map || identity;
const n = values.length;
let i = -1;
let value;
let min;
let max;
while (++i < n) { // Find the first value.
value = values[i];
if (predicate(value)) {
min = max = value;
while (++i < n) { // Compare the remaining values.
value = values[i];
if (predicate(value)) {
if (min > value) {
min = value;
}
if (max < value) {
max = value;
}
}
}
}
}
return min === undefined || max === undefined ? undefined : [transform(min), transform(max)];
}
/**
* finds the min and max using a process appropriate for stacked values. Ie,
* summing up the positive and negative numbers, and returning the totals of each
*/
export function findMinMax(values) {
let min = 0;
let max = 0;
for (const value of values) {
if (value < 0) {
min += value;
}
else {
max += value;
}
}
return { min, max };
}
export function copy(array, start = 0, count = array.length) {
const result = [];
let n = array.length;
if (n) {
for (let i = 0; i < count; i++) {
result.push(array[(start + i) % n]);
}
}
return result;
}
//# sourceMappingURL=array.js.map