UNPKG

@ionre/utils

Version:

utility functions

150 lines (149 loc) 4.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.all = function (f) { return function (arr) { var i = 0; var n = arr.length; while (i < n) { if (!f(arr[i])) return false; i++; } return true; }; }; exports.any = function (f) { return function (arr) { var i = 0; var n = arr.length; while (i < n) { if (f(arr[i])) return true; i++; } return false; }; }; exports.drop = function (n) { return function (arr) { return arr.slice(n); }; }; exports.filter = function (f) { return function (arr) { var n = arr.length; var arr1 = []; for (var i = 0; i < n; i++) { if (f(arr[i])) { arr1 = arr1.concat([arr[i]]); } } return arr1; }; }; exports.flat = function (arr) { var arr1 = []; var n = arr.length; for (var i = 0; i < n; i++) { arr1 = arr1.concat(arr[i]); } return arr1; }; exports.foldl = function (f) { return function (ival) { return function (arr) { var acc = ival; var n = arr.length; for (var i = 0; i < n; i++) { acc = f(acc)(arr[i]); } return acc; }; }; }; exports.foldm = function (f) { return function (arr) { var x = arr[0]; var n = arr.length; for (var i = 1; i < n; i++) { x = f(x)(arr[i]); } return x; }; }; exports.foldr = function (f) { return function (ival) { return function (arr) { var acc = ival; for (var i = arr.length - 1; i >= 0; i--) { acc = f(arr[i])(acc); } return acc; }; }; }; exports.head = function (arr) { return arr[0]; }; exports.init = function (arr) { return arr.slice(0, arr.length - 1); }; exports.last = function (arr) { return arr[arr.length - 1]; }; exports.length = function (arr) { return arr.length; }; exports.map = function (f) { return function (arr) { var n = arr.length; var arr1 = Array(n); for (var i = 0; i < n; i++) { arr1[i] = f(arr[i]); } return arr1; }; }; exports.map2 = function (f) { return function (arr1) { return function (arr2) { var n = Math.min(arr1.length, arr2.length); var arr = Array(n); for (var i = 0; i < n; i++) { arr[i] = f(arr1[i])(arr2[i]); } return arr; }; }; }; exports.padl = function (minLen) { return function (val) { return function (arr) { if (arr.length >= minLen) return arr; else { return Array(minLen - arr.length).fill(val).concat(arr); } }; }; }; exports.padr = function (minLen) { return function (val) { return function (arr) { if (arr.length >= minLen) return arr; else { return arr.concat(Array(minLen - arr.length).fill(val)); } }; }; }; exports.range = function (start) { return function (end) { var n = end - start; // let arr = new Float32Array(n) // for (let i = 0; i < n; i++) { // arr[i] = start + i // } // return arr return (new Float32Array(n)).map(function (_, i) { return start + i; }); }; }; exports.range0 = function (n) { // let arr = new Float32Array(n) // for (let i = 0; i < n; i++) { // arr[i] = i // } // return arr return (new Float32Array(n)).map(function (_, i) { return i; }); }; exports.slice = function (start) { return function (end) { return function (arr) { return arr.slice(start, end); }; }; }; exports.take = function (n) { return function (arr) { return arr.slice(0, n); }; }; exports.takeWhile = function (f) { return function (arr) { var n = arr.length; var i = 0; while (i < n) { if (!f(arr[i])) { break; } i++; } return arr.slice(0, i); }; }; exports.tail = function (arr) { return arr.slice(1); }; exports.transpose = function (arr) { var w = arr[0].length; var h = arr.length; var arr1 = []; for (var i = 0; i < w; i++) { arr1.push([]); for (var j = 0; j < h; j++) { arr1[i].push(arr[j][i]); } } return arr1; }; exports.zip = function (arr1) { return function (arr2) { var n = Math.min(arr1.length, arr2.length); var arr = Array(n); for (var i = 0; i < n; i++) { arr[i] = [arr1[i], arr2[i]]; } return arr; }; };