![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
@bgschiller/bisect
Advanced tools
A reimplementation of Python's bisect library in TypeScript.
Locate the insertion point for needle
in arr
to maintain sorted order. The parameters lo
and hi
may be used to specify a subset of the list which should be considered; by default the entire list is used. If needle
is already present in arr
, the insertion point will be before (to the left of) any existing entries. The return value is suitable for use as the first parameter to Array.prototype.splice()
assuming that arr
is already sorted.
function bisect_left<C extends Comparable>(
arr: C[],
needle: C,
lo: number = 0,
hi: number = arr.length
): number;
The returned insertion point i
partitions the array arr
into two halves so that arr.slice(lo, i).every(val => val < needle)
for the left side and arr.slice(i, hi).every(val => val >= x)
for the right side.
Similar to bisect_left()
, but returns an insertion point which comes after (to the right of) any existing entries of needle
in arr
.
function bisect_right<C extends Comparable>(
arr: C[],
needle: C,
lo: number = 0,
hi: number = arr.length
): number;
The returned insertion point i
partitions the array arr
into two halves so that arr.slice(lo, i).every(val => val <= x)
for the left side and arr.slice(i, hi).every(val => val > x)
for the right side.
In order to work with more complex types than string | number | Date
, it is useful to have a container that applies a key function and maintains sorted order for you.
Check out the source to see what methods exist (it's not too hard to read).
const pets: Pet[] = [
{ name: 'Heidi', dateOfBirth: new Date(2007, 10, 1), numberLegs: 4 },
{ name: 'Artemis', dateOfBirth: new Date(2014, 3, 1), numberLegs: 4 },
{ name: 'Some-Snake', dateOfBirth: new Date(2015, 3, 5), numberLegs: 0 },
{ name: 'Sully', dateOfBirth: new Date(2005, 1, 1), numberLegs: 3 },
];
const sa = new SortedArray(p => p.name, pets);
function petsAreEqual(p1: Pet, p2: Pet): boolean {
return p1.name === p2.name;
}
sa.contains(
{ name: 'Heidi', dateOfBirth: new Date(2007, 10, 1), numberLegs: 4 },
petsAreEqual //(uses object equality if no second param is passed)
); // true
sa.insert({
name: 'Colt',
dateOfBirth: new Date(2010, 3, 1),
numberOfLegs: 4,
}); // false
for (const pet of sa) {
console.log(pet);
}
We recommend using np.
FAQs
A reimplementation of Python's bisect library in TypeScript.
The npm package @bgschiller/bisect receives a total of 3 weekly downloads. As such, @bgschiller/bisect popularity was classified as not popular.
We found that @bgschiller/bisect demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.