util.diff(actual, expected)
稳定性: 1 - 实验性
actual<Array> | <string> 要比较的第一个值expected<Array> | <string> 要比较的第二个值- 返回:<Array> 差异条目的数组。每个条目是一个包含两个元素的数组:
- 算法复杂度:O(N*D),其中:
- N 是两个序列合并后的总长度 (N = actual.length + expected.length)
- D 是编辑距离(将一个序列转换为另一个序列所需的最少操作次数)。
util.diff() 比较两个字符串或数组值,并返回一个差异条目的数组。它使用 Myers 差异算法来计算最小差异,这也是断言错误消息内部使用的算法。
如果值相等,则返回一个空数组。
【If the values are equal, an empty array is returned.】
const { diff } = require('node:util');
// Comparing strings
const actualString = '12345678';
const expectedString = '12!!5!7!';
console.log(diff(actualString, expectedString));
// [
// [0, '1'],
// [0, '2'],
// [1, '3'],
// [1, '4'],
// [-1, '!'],
// [-1, '!'],
// [0, '5'],
// [1, '6'],
// [-1, '!'],
// [0, '7'],
// [1, '8'],
// [-1, '!'],
// ]
// Comparing arrays
const actualArray = ['1', '2', '3'];
const expectedArray = ['1', '3', '4'];
console.log(diff(actualArray, expectedArray));
// [
// [0, '1'],
// [1, '2'],
// [0, '3'],
// [-1, '4'],
// ]
// Equal values return empty array
console.log(diff('same', 'same'));
// []