1.0.0 • Published 14 days ago

@lambrioanpm/officiis-velit-voluptatum v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
14 days ago

Syntactic sugar wrapper over JS sort function with better readability

Zero-dependency minimal package (two functions) to provide better-readable (albeit more verbose) wrapper over JS default Array.sort(). Fully typed.

Prevents errors when interchanging signs in the native Array.sort() function like this:

foo.sort((a, b) => (a.date.isBefore(b.date) ? -1 : 1)) - at the first glance, is this sorted in ASC or DESC order??

Usage:

import { sortAsc } from "./src/index";

const array = [3, 1, 4, 1, 5, 9, 2, 6];

const sortedArray = sortAsc({
  array,
  firstIsGreater: (a, b) => a > b, // Compare function that returns boolean
});

console.log(sortedArray); // [1, 1, 2, 3, 4, 5, 6, 9]

console.log(array); // [3, 1, 4, 1, 5, 9, 2, 6] - keeps the original array intact

You can provide areEqual function parameter to ensure stability of the sorting function. Otherwise it sorts equal elements in non-deterministic order.

import { sortAsc } from "./src/index";

// The sortAsc function is a stable sort when `areEqual` is provided, meaning that it preserves the original input order of elements that are equal.

const inputArray = [
  { name: "John", age: 25 },
  { name: "Alice", age: 30 },
  { name: "Bob", age: 20 },
  { name: "Mike", age: 25 },
];

const sortedArray = sortAsc({
  array: inputArray,
  firstIsGreater: (a, b) => a > b,
  areEqual: (a, b) => a === b,
});

console.log(sortedArray); // [{ name: "Bob", age: 20 }, { name: "John", age: 25 }, { name: "Mike", age: 25 }, { name: "Alice", age: 30 }] - keeps equal elements in order they appear in input
ierequireclient-0deep-cloneencryptionfind-upmatchgetPrototypeOfentriesformsObject.getPrototypeOfjsonschemaarraysconcatprotoaccessorresolvereduceESwritableObjectES2023fastcopyStyleSheetbytetddsameValueZeroimmertypeerrormetadatafseventswidthwatcherRxJSenvtestvariablesvisualstringtrimEndconfigurablesuperstructcomputed-typestranspilertypesafeString.prototype.matchAllvalidationawesomesauceTypedArraylengthlook-upsignalsObject.keysxdg-opendefaultsymbolchromepicomatch0arrayjsjson-schemafast256datesanitizationcompilercss lessprivateopenstypeObject.fromEntriesurlgettergroupomitpoint-freemobilewordwrapreact-testing-libraryequalconcatMapassertscryptofastifycorsprefixReactiveExtensionsstylesheettrimStartttyvalidincludesjwtvalueArray.prototype.contains$.extendfindLastUint32Arrayfast-clonetimeregexpflagsformelectronURLsignalinferencepushfunctionstyletypedarrayestreezodinternal slotES2017inputauthfindupprotocol-buffersWeakSetstarterinterruptsquerydiffES2015onceStreamsiterationform-validationfetchapolloerror-handlingspinnerscorecachenegativebootstrap lesstacitasciiqsgroupByUint16Arrayio-tsUnderscoreinstallwhatwgsymlinkstreamsnpmposebannertouchwaapiboundxhres2018typedcall-bindcollectionoperating-systemwhichbabelwordbreakSetdatastructureCSSargvvalidatorreadexit-codeuuides2015eslintplugines-shimsprotobufredux-toolkitchromiumratelimitratedebugharmonymatchAllmime-dbqueueMicrotaskgdprcsspackagecall-boundmimetypestoStringTagmovespeckarmaSymbol.toStringTagYAMLcontainsbcryptcommandmulti-packagetrimRightviewreact animationdeleteclassesdataviewrm -rfstream
@lambrioanpm/iure-sint-eligendi@lambrioanpm/labore-eos-libero@lambrioanpm/laboriosam-cupiditate-ipsam@lambrioanpm/magni-magnam-rem@lambrioanpm/maxime-deserunt-porro@lambrioanpm/modi-commodi-culpa@lambrioanpm/molestiae-asperiores-eum@lambrioanpm/molestiae-esse-nemo@lambrioanpm/molestias-aut-quos@lambrioanpm/molestias-odit-non@lambrioanpm/mollitia-ab-reprehenderit@lambrioanpm/mollitia-doloremque-laborum@lambrioanpm/natus-adipisci-eius@lambrioanpm/placeat-aperiam-incidunt@lambrioanpm/quasi-dolor-inventore@lambrioanpm/qui-officiis-illum@lambrioanpm/quibusdam-officiis-occaecati@lambrioanpm/quis-quod-ipsa@lambrioanpm/reiciendis-necessitatibus-perferendis@lambrioanpm/rem-doloribus-deserunt@lambrioanpm/rerum-maiores-minus@lambrioanpm/sunt-officia-officiis@lambrioanpm/unde-debitis-perferendis@lambrioanpm/unde-facilis-assumenda@lambrioanpm/ut-quod-dicta@lambrioanpm/ab-qui-doloremque@lambrioanpm/accusamus-animi-quae@lambrioanpm/accusantium-architecto-omnis@lambrioanpm/aperiam-iure-odit@lambrioanpm/architecto-rem-necessitatibus@lambrioanpm/asperiores-ut-est@lambrioanpm/assumenda-mollitia-harum@lambrioanpm/at-nam-eos@lambrioanpm/blanditiis-perspiciatis-animi@lambrioanpm/consectetur-aspernatur-omnis@lambrioanpm/consequuntur-natus-maiores@lambrioanpm/corrupti-fugit-rem@lambrioanpm/natus-cupiditate-asperiores@lambrioanpm/nemo-dolorum-sit@lambrioanpm/nihil-officiis-nihil@lambrioanpm/numquam-voluptates-molestias@lambrioanpm/omnis-debitis-iste@lambrioanpm/omnis-qui-voluptatibus@lambrioanpm/pariatur-molestias-doloremque@lambrioanpm/pariatur-natus-voluptatem@lambrioanpm/perferendis-soluta-explicabo@lambrioanpm/esse-dolorum-placeat@lambrioanpm/exercitationem-magnam-sit@lambrioanpm/expedita-voluptate-voluptatum@lambrioanpm/explicabo-tempora-qui@lambrioanpm/id-reprehenderit-qui@lambrioanpm/impedit-deleniti-exercitationem@lambrioanpm/ipsa-quos-ab@lambrioanpm/iste-vero-veritatis@lambrioanpm/distinctio-mollitia-perferendis@lambrioanpm/dolore-ad-eius@lambrioanpm/dolore-earum-explicabo@lambrioanpm/dolorem-eius-doloribus@lambrioanpm/dolorem-ipsa-error@lambrioanpm/doloremque-nostrum-delectus@lambrioanpm/doloribus-praesentium-rerum@lambrioanpm/ea-iste-repellat@lambrioanpm/ea-numquam-iure@lambrioanpm/earum-numquam-saepe@lambrioanpm/cum-nemo-nam@lambrioanpm/debitis-culpa-culpa@lambrioanpm/debitis-minima-magnam@lambrioanpm/ut-veniam-rem@lambrioanpm/voluptatem-dignissimos-eaque@lambrioanpm/voluptatem-tempore-atque@lambrioanpm/voluptatibus-ducimus-eligendi
1.0.0

14 days ago