majinbuu

2.0.2 • Public • Published

Majin Buu

License: ISC Build Status Coverage Status donate

Apply the Levenshtein distance to transform / morph an Array into another, performing the least amount of needed .splice(...) operations.

const abra = ['a', 'b', 'r', 'a'];
majinbuu(abra, ['c', 'a', 'd', 'a', 'b', 'r', 'a']);

abra; // now ['c', 'a', 'd', 'a', 'b', 'r', 'a']

It is also possible to intercept all splice calls using an aura, which augments the splice method of the list, delegating the interceptor one.

const abra = ['a', 'b', 'r', 'a'];
const interceptor = {
  splice(index, removal, ...items) {
    console.log(index, removal, ...items);
    abra.splice.apply(abra, arguments);
  }
};
const aura = majinbuu.aura(interceptor, abra);

majinbuu(aura, ['c', 'a', 'd', 'a', 'b', 'r', 'a']);
// 0 0 "c"
// 2 0 "d" "a"

The optional third argument avoid processing grids that are too big (comparing lists with too many items).

const noMoreThan1K = 1000;
majinbuu(list1, list2, noMoreThan1K);

If the square of the list1 and list2 product is higher than noMoreThan1K, the splice operation will remove all list1 items and push all list2.

Compatibility

Every. JavaScript. Engine.

Package Sidebar

Install

npm i majinbuu

Weekly Downloads

19

Version

2.0.2

License

ISC

Last publish

Collaborators

  • webreflection