bigint-crypto-utils/node_modules/common-sequence/index.mjs

43 lines
1.0 KiB
JavaScript

/**
* Returns an array containing the initial elements which both input arrays have in common.
*
* A common use-case for this is discovering common ancestors between two file paths.
*
* ```js
* > commonSequence = require("common-sequence");
*
* > pathA = "/Users/lloyd/Documents/75lb/dmd".split("/");
* > pathB = "/Users/lloyd/Documents/75lb/array-tools".split("/");
*
* > commonSequence(pathA, pathB).join("/");
* '/Users/lloyd/Documents/75lb'
* ```
*
* or a more trivial example:
* ```js
* > a.commonSequence([ 1, 2, 3 ], [ 1, 2, 4 ])
* [ 1, 2 ]
* ```
* @module common-sequence
*/
module.exports = commonSequence
/**
* Returns the initial elements which both input arrays have in common
* @param {Array} - first array to compare
* @param {Array} - second array to compare
* @returns {Array}
* @alias module:common-sequence
*/
function commonSequence (a, b) {
var result = []
for (var i = 0; i < Math.min(a.length, b.length); i++) {
if (a[i] === b[i]) {
result.push(a[i])
} else {
break
}
}
return result
}