Skip to content

Find the difference between two arrays and compute the minimal steps to transform one array to another.

Notifications You must be signed in to change notification settings

klo112358/array-edit-steps

Repository files navigation

array-edit-steps

Find the difference between two arrays and compute the minimal steps to transform one array to another.

Installing

Using npm:

$ npm install array-edit-steps

Using yarn:

$ yarn add array-edit-steps

Using unpkg CDN:

<script src="https://unpkg.com/array-edit-steps/umd/array-edit-steps.min.js"></script>

Usage

const getEditSteps = require('array-edit-steps')

const steps = getEditSteps(['w', 'x', 'y', 'z'], ['x', 'y', 'u', 'v'])

// steps = [
//   [ 'e', 3, 'v' ], -- Edit item at index 3 to 'v' --> ['w', 'x', 'y', 'v']
//   [ 'i', 3, 'u' ], -- Insert 'u' at index 3       --> ['w', 'x', 'y', 'u', 'v']
//   [ 'd', 0 ],      -- Delete item at index 0      --> ['x', 'y', 'u', 'v']
// ]

With options provided as the third argument:

const getEditSteps = require('array-edit-steps')

const steps = getEditSteps(
  [{ id: 1 }, { id: 2 }, { id: 3 }],
  [{ id: 2 }, { id: 1 }, { id: 3 }],
  {
    preferEdit: true,                // prefer edit over insert/delete
    equals: (a, b) => a.id === b.id, // custom equal function
  }
)

// steps = [ [ 'e', 1, { id: 1 } ], [ 'e', 0, { id: 2 } ] ]

Strings and array-like objects are supported as well.

TypeScript

array-edit-steps includes TypeScript definitions.

import getEditSteps from 'array-edit-steps'

const steps = getEditSteps('arr', 'array')

About

Find the difference between two arrays and compute the minimal steps to transform one array to another.

Resources

Stars

Watchers

Forks

Packages

No packages published