Download node_modules/d3-array/src/rank.js from NKessler/Horizon: direct link, hf CLI and curl.
- Browser
- Download file 942 Bytes
-
https://huggingface.co/NKessler/Horizon/resolve/main/node_modules/d3-array/src/rank.js
- Command line
-
hf download hf://NKessler/Horizon/node_modules/d3-array/src/rank.js
-
curl -L -o rank.js https://huggingface.co/NKessler/Horizon/resolve/main/node_modules/d3-array/src/rank.js
942 Bytes
| import ascending from "./ascending.js"; | |
| import {ascendingDefined, compareDefined} from "./sort.js"; | |
| export default function rank(values, valueof = ascending) { | |
| if (typeof values[Symbol.iterator] !== "function") throw new TypeError("values is not iterable"); | |
| let V = Array.from(values); | |
| const R = new Float64Array(V.length); | |
| if (valueof.length !== 2) V = V.map(valueof), valueof = ascending; | |
| const compareIndex = (i, j) => valueof(V[i], V[j]); | |
| let k, r; | |
| values = Uint32Array.from(V, (_, i) => i); | |
| // Risky chaining due to Safari 14 https://github.com/d3/d3-array/issues/123 | |
| values.sort(valueof === ascending ? (i, j) => ascendingDefined(V[i], V[j]) : compareDefined(compareIndex)); | |
| values.forEach((j, i) => { | |
| const c = compareIndex(j, k === undefined ? j : k); | |
| if (c >= 0) { | |
| if (k === undefined || c > 0) k = j, r = i; | |
| R[j] = r; | |
| } else { | |
| R[j] = NaN; | |
| } | |
| }); | |
| return R; | |
| } | |